test et arguments [Code et Script][bash] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 31-08-2017 à 23:30:03
j'ai corriger un peu enfin...
Code :
|
Marsh Posté le 01-09-2017 à 20:56:02
Citation : j'ai corriger un peu enfin... |
et ?
attention, > n'est pas un opérateur arithmétique.
le test est donc toujours vrai, et tu as désormais un fichier nommé 2.
et $2 doit aussi être entre guillemets, au cas où il serait composé de plusieurs mots.
Marsh Posté le 01-09-2017 à 21:29:45
soit on fait $var soit $"var" ou plus ${var}
> a été expliqué par watael donc ; il a raison
les ";" sur tes fi sont facultatifs
par contre oui ; grand OUI ; tu as indenté et ça c'est bien !!!!!
Marsh Posté le 01-09-2017 à 23:33:16
${var} n'évitera pas l'échec du test, il n'y a que les guillemets qui permettront à test de considérer la chaîne testée comme une seule "entité" :
Code :
|
Marsh Posté le 02-09-2017 à 12:40:05
Merci pour vos réponse.
Comment je fais un teste de comparaison arithmétique ?
J'ai pourtant lu le man de bash ils disent bien d'employer "< | > |<= | >="
Marsh Posté le 02-09-2017 à 14:30:20
Salut,
Citation : J'ai pourtant lu le man de bash ils disent bien d'employer "< | > |<= | >=" |
T'as du louper cette partie :
Citation : arg1 OP arg2 |
Marsh Posté le 02-09-2017 à 14:45:27
Merci, mais non je l'ai pas loupé, le l'utilise d'ailleurs...
Man un peu plus haute dans la man de bash.
Citation : |ARITHMETIC EVALUATION | |
Marsh Posté le 02-09-2017 à 15:05:01
Donc, change ton
Code :
|
par :
Code :
|
Marsh Posté le 02-09-2017 à 15:36:06
Citation : J'ai pourtant lu le man de bash ils disent bien d'employer "< | > |<= | >=" |
oui, dans une Évaluation arithmétique, mais pas dans un test.
une évaluation arithmétique est initiée par des parenthèses doubles :
Code :
|
et quand tu voudras faire une comparaison lexicale dans un test, en utilisant ces opérateurs donc, il faudra les protéger pour inhiber la redirection.
Code :
|
Marsh Posté le 29-01-2018 à 23:39:41
Et attention également à l'utilisation de $?.
En effet, quand tu fais par exemple :
echo $?
exit $?
Lors de la 2e instruction, exit $? utilisera le code retour de l'instruction "echo $?" soit 0 logiquement.
En général, il est préférable de "capturer" un code retour dans une variable pour s'en servir par la suite. C'est trompeur
Marsh Posté le 31-08-2017 à 21:57:58
Bonjour,
Je voudrais vérifier quelque condition avant d'exécuter une commande et retourner le code de retour de la commande.
Voici mon code :
+---------------------------------------------------------------------------[X]+
|#!/bin/bash |
|# hello |
|echo -e "\033[035mhello \033[032m$USER \033[0m" |
|if [ $# > 2 ]; then |
| if [ -n $1 ]; then |
| if [ $2=="test" ]; then |
| /bin/echo -e "[$0] test $2"; |
| test $2; |
| if [ $? -eq 0 ]; then |
| exit 0; |
| else |
| echo $?; |
| exit $?; |
| fi; |
| fi; |
| fi; |
|fi; |
|exit 0 |
+------------------------------------------------------------------------------+
Voici le résultat de l'appel suivant : ./hello
hello sens
[./hello] test
1
dois y a voir une erreur de syntaxe ou un truc à configurer avant, j'en sais rien mais c'est pas probant.
Le premier test est censé tester si le nombre d'argument est supérieur à 2.
Un coup de main sera bien venu, s'il vous plaît. Merci.
Message édité par Profil supprimé le 31-08-2017 à 21:58:54