我有一个fish shell脚本,其默认行为是在完成后发送电子邮件.我想修改它以响应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
Run Code Online (Sandbox Code Playgroud)
运行此命令会引发以下错误:
switch: Expected exactly one argument, got 0
显然它需要一个参数,我只是不知道告诉它不接受任何参数的语法,或者它是否存在的语法.
我猜这是非常基本的,但我只是不太了解shell脚本.
Pau*_*ce. 10
switch像这样包装你的陈述:
if set -q argv
...
end
Run Code Online (Sandbox Code Playgroud)
另外,我认为你的默认情况应该是case '*'.
如果您更喜欢使用switch语句,那么它也是可能的:
switch (echo $argv)
case nomail
## Perform normal script functions
case '*'
## Perform normal script functions
mailx -s "Script Done!"
end
Run Code Online (Sandbox Code Playgroud)