Donc, fondamentalement, j'essaie de vérifier les arguments qui sont passés dans le script. S'il a trois arguments et le troisième argument est un 1, alors je veux qu'il continue. Je veux aussi continuer si elle a quatre arguments et le troisième argument est pas 1.Problème de vérification d'argument dans le script Bash
Donc, fondamentalement, je pensais que je pouvais faire ...
if ([ $# -ne 3 ] and [ "$3" -ne "2" ])
then
exit 0
fi
Cependant, il semble que Bash ne J'ai et doit utiliser pour si, alors j'ai pensé que je pourrais utiliser imbriqué si, mais maintenant il se plaint encore. Voilà donc ce que j'ai actuellement ...
if [ $# -ne 3 ]
then
if [ "$3" -ne "1" ]
then
echo "Improper number of arguments.
FORMAT make-csv-data <STUDY> <TAG> <MODE> <SELECT>
Select can be left off if you want all data (Mode=1)
"
exit 0
fi
fi
if [ $# -ne 4 ]
then
if [ "$3" -ne "2" ]
then
echo "Improper number of arguments.
FORMAT make-csv-data <STUDY> <TAG> <MODE> <SELECT>
Select can be left off if you want all data (Mode=1)
"
exit 0
fi
fi
Alors, où vais-je tort? Puis-je imbriquer des instructions dans Bash? Y a-t-il une façon super-zen de faire cela que je manque complètement?
Merci pour l'aide que vous pourriez me donner.
Nouveau problème ...
Maintenant, pour une raison ou une autre, le code ne fonctionne pas du tout. Il n'y a pas d'erreurs ou quoi que ce soit, ça ne marche tout simplement pas. Il ne vérifie pas le nombre d'arguments. J'ai exécuté le script sans arguments du tout et il saute simplement comme si ce n'était même pas là.
Une partie étrange est que j'étais sûr que le code fonctionnait hier. Revenez aujourd'hui, pas tellement. Des idées sur ce qu'est le problème? (Désolé, mais je dois enlever la réponse acceptée à ce sujet.)
if [[ $# = 3 && "$3" != "1" ]]
then
echo "Improper number of arguments.
FORMAT make-csv-data <STUDY> <TAG> <MODE> <SELECT>
Select can be omitted if all data is required (Mode=1)
"
exit 0
fi
if [[ $# > 4 ]]
then
echo "Improper number of arguments.
FORMAT make-csv-data <STUDY> <TAG> <MODE> <SELECT>
Select can be omitted if all data is required (Mode=1)
"
exit 0
fi
EDIT II:
Il y a quelques choses que le shell Bash est de ne pas aimer sur ce script que je suis en train faire. Je finirai probablement par le réécrire dans un autre langage de script et faire quelques autres choses que j'ai en tête pour le projet. Merci pour l'aide dans tous les cas.
quelle erreur obtenez-vous? – Glen