12

デフォルトの動作が完了すると電子メールを送信するフィッシュシェルスクリプトがあります。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

明らかに、引数が必要です。引数を受け入れないように、または存在する場合は引数を受け入れるように指示するための構文がわかりません。

これはかなり基本的なことだと思いますが、シェルスクリプトをよく理解していません。

4

2 に答える 2

10

switch次のようにステートメントをラップします。

if set -q argv
    ...
end

また、デフォルトのケースはである必要があると思いますcase '*'

于 2010-06-25T14:26:34.777 に答える