関数を呼び出すためにgetoptsを取得しようとしています

関数を呼び出すためにgetoptsを取得しようとしています

関数を呼び出すようにします。

これは私のコードです

#!/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)。

おすすめ記事