コマンドラインで実行するときにbash関数をスクリプトの引数として渡す最善の方法は何ですか?

コマンドラインで実行するときにbash関数をスクリプトの引数として渡す最善の方法は何ですか?

私はbashスクリプトに初めてアクセスし、コマンドラインを介して実行するときにスクリプトのbashスクリプト関数に引数を取る最も簡単な方法が何であるかを知りたいと思います。

使用例:

./myscript function1
./myscript function2

myscriptの内容例:

echo "Example myscript"

function1() { 
    echo "I am function number 1"
}

function2() { 
    echo "I am function number 2"
}

if [ $# -eq 0 ]; then
    echo "Specify a function. E.g. function1"
    exit 1;
fi

スクリプトは、コマンドラインから呼び出されたときにのみ特定の機能を実行します。そうでない場合は、いくつかの使用例が表示されます。 cronとそのプロセスで利用可能で、ユーザーが実行する必要があります。

答え1

シェルスクリプトに渡されたすべてのパラメータは、次の場所に保存されます。$@、これを繰り返すことができます。

#!/bin/bash

echo "Example myscript"

function1() { 
    echo "I am function number 1"
}

function2() { 
    echo "I am function number 2"
}

if [ $# -eq 0 ]; then
    echo "Specify a function. E.g. function1"
    exit 1;
fi

for func do
  [ "$(type -t -- "$func")" = function ] && "$func"
done

[ "$(type -t -- "$func")" = function ]$func関数の場合にのみ関数呼び出しを行うようにしてください。

例:

$ ./test.sh function1
Example myscript
I am function number 1

$ ./test.sh function1 function2
Example myscript
I am function number 1
I am function number 2

関連情報