У меня есть сценарий оболочки рыбы, чье поведение по умолчанию состоит в том, чтобы послать электронное письмо, когда завершенный. Я хотел бы изменить его для ответа на a nomail
аргумент от командной строки. Так, например, запущение скрипта обычно производило бы электронное письмо:
michaelmichael: ~/bin/myscript
Но, если выполнено с nomail
переключатель, это не отправило бы электронное письмо с подтверждением:
michaelmichael: ~/bin/myscript nomail
Если я запускаю скрипт с nomail
аргумент, это хорошо работает. Без nomail
, $argv
не определено, и это бросает ошибку. Я обыскивал документацию оболочки рыбы, но, может казаться, не нахожу ничего, что будет работать. Вот то, что я имею до сих пор
switch $argv
case nomail
## Perform normal script functions
case ???
## Perform normal script functions
mailx -s "Script Done!"
end
Выполнение этого бросает следующую ошибку:
switch: Expected exactly one argument, got 0
Очевидно, это ожидает аргумент, я просто не знаю синтаксис для сообщения этого не принять аргументы или тот, если это существует.
Я предполагаю, что это является довольно основным, но я просто не понимаю оболочку, пишущую сценарий очень хорошо.
Оберните оператор switch
следующим образом:
if set -q argv
...
end
Кроме того, я думаю, что ваш случай по умолчанию должен быть case '*'
.