Так что в основном я пытаюсь проверить аргументы, переданные в скрипт. Если у него есть три аргумента, а третий аргумент равен 1, я хочу, чтобы он продолжался. Я также хочу, чтобы продолжить работу, если она имеет четыре аргумента, а третий аргумент не является 1.Проблема с проверкой аргументов в скрипте Bash
Поэтому в основном я думал, что я мог бы просто сделать ...
if ([ $# -ne 3 ] and [ "$3" -ne "2" ])
then
exit 0
fi
Однако, кажется, что Bash не иметь и использовать для if's, поэтому я решил, что могу просто использовать вложенные if, но теперь он еще жалуется. Так что это то, что у меня есть ...
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
Итак, где я иду не так? Могу ли я не вставлять заявления в Bash? Есть ли способ сделать так, чтобы я вообще отсутствовал?
Спасибо за любую помощь, которую вы могли бы мне дать.
Новая задача ...
Теперь, по той или иной причине, то код не работает вообще. Нет ошибок или чего-то еще, это просто не работает. Он не проверяет количество аргументов. Я запускаю скрипт без каких-либо аргументов, и он просто пропускает его, как будто его даже нет.
Странная часть заключается в том, что я был уверен, что код работал вчера. Вернись сегодня, не так много. Любые идеи о том, в чем проблема? (Извините, но я должен удалить принятый ответ на это.)
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:
Есть несколько вещей, что Bash оболочке не нравится об этом сценарии, что я пытаюсь делать. Я, вероятно, в конечном итоге переписал его на другом языке сценариев и сделаю еще несколько вещей, которые я имею в виду для проекта. Спасибо за помощь в любом случае.
какая ошибка поживаешь? – Glen