Quelqu'un peut-il expliquer comment tester un script Bash Shell?
Par exemple, j'ai un fichier .sh avec ce code ... P>
#!/bin/sh for file in *.txt; do mv "$file" "`basename $file .txt`.doc" done
3 Réponses :
J'ajouterais un Certaines ressources utiles éventuellement: p>
Echo code> devant le
MV code> pour vérifier que les bonnes commandes sont en cours de création, pour commencer. (Toujours une bonne idée des commandes qui rendent peut-être difficiles à annuler des changements.) P>
D'accord merci. Mais j'essaie de créer un fichier .sh qui testent que tout le code.
@MR dents: a ajouté des liens ci-dessus. Cela dit, les scripts shell sont un peu plus difficiles à tester un appareil efficacement parce que presque tout se résume à invoquer des commandes externes. Il est presque plus judicieux et utile de tester ces commandes et de tester le script lui-même en éduquant les modifications externes avec Echo code>, par conséquent.
Vous pouvez faire affirmer dans Bash. Consultez ceci à partir du Guide de script Bash Advanced Bash: P>
S'il vous plaît n'encouragez pas l'ABS comme référence - en règle générale, il est mis sous tension et prenant l'habitude de mettre en valeur des exemples de mauvaise pratique. Le WOLDEDED WIKI et le Bash-Hackers Wiki (et bien sûr le manuel officiel) sont beaucoup i> de meilleures ressources.
@CharlesDuffy Généralement bons conseils mais pas très utile dans ce cas car vous n'avez pas signalé qu'à une alternative et que les ABS fournissent au moins un script d'affirmation, tandis que ni le WoolEdge Wiki ( MyWiki.woolgedge.org/... ) NOR BASH HACKERS WIKI ( wiki-dev.bash-hackers.org/start?do=Search&id=assert a>) contient toute discussion sur les assertions du tout.
Essayez ceci: ASSERT.SH
source "./assert.sh" local expected actual expected="Hello" actual="World!" assert_eq "$expected" "$actual" "not equivalent!" # => x Hello == World :: not equivalent!
Consultez ceci -> Stackoverflow.com/questions/1339416/testing-bash-scripts
Test de l'unité Scripts Bash. Joli. :)
C'est mieux:
MV "$ fichier" "$ (brefName" $ fichier ".txt) .doc" code> ou
mv "$ fichier" "$ {fichier% *. Txt} .doc " code>