関数を呼び出すようにします。
これは私のコードです
#!/bin/bash
while getopts ":a:b:" opt; do
case $opt in
a)
my_function "%e"
;;
b)
my_function "%s"
;;
/?)
echo "Invalid option: -$OPTARG"
;;
esac
done
my_function() {
option=$1
//do something here
}
私が電話したとき:./myscript.sh -a sshd
が表示されます./myscript.sh: line 5: my_function: command not found
問題を解決するにはどうすればよいですか?
ベストアンサー1
シェルスクリプトが関数を呼び出すには、関数が呼び出される前に関数を定義する必要があります。あなたのコードではそうではありません。
この問題を解決するには、関数をコマンドライン解析ループの上に移動します。
また、最後のcase
テストでは、*)
未処理のオプションをすべてキャプチャします(/?
単一のオプション文字と一致しません)。そしてgetopts
ユーティリティはすでにエラーメッセージを出力しているので、これを繰り返す必要はありません($OPTARG
おそらくここでも使用中のメッセージではないかもしれません$opt
)。