条件パラメータ

条件パラメータ

スクリプトの特定の行を実行するためにbashスクリプトを起動したときにパラメータを渡す方法

たとえば( createfile.sh):

#!/bin/bash

export CLIENT1_DIR="<path1>"
export CLIENT2_DIR="<path2>"
chef-solo -c solo.rb -j client1.json
chef-solo -c solo.rb -j client2.json

それから

$ ./createfile.sh client1

特定の行のみをclient1実行し、「client2特定の行のみを実行する必要がありますclient2」に置き換えられます。

答え1

これには多くの解決策があります。これは:

#!/bin/bash

client="$1"

case "$client" in
    "client1") export CLIENT1_DIR="<path1>" ;;
    "client2") export CLIENT2_DIR="<path2>" ;;
    *)  printf 'Invalid client argument: %s\n' "$client" >&2
        exit 1 ;;
esac

chef-solo -c solo.rb -j "$client".json

このclient変数は、最初のコマンドライン引数の値を取得します。

ステートメントはcase値を設定またはベースにしますCLIENT1_DIRCLIENT2_DIR無効な値が使用されている場合はエラーメッセージで終了します)。

次に、chef-soloコマンドラインで提供されている内容に対応するJSONファイルを使用して呼び出します。

答え2

関数には次の行があります。

#!/bin/bash
clientOne(){
    ## client1 specific lines
    echo "one"
}
clientTwo(){
    ## client2 specific lines
    echo "two"
}

case "$1" in
    "client1")
        clientOne
        ;;
    "client2")
        clientTwo
        ;;
    *)
        echo "Wrong option" >&2
        ;;
esac

## Common lines
echo foo

関連情報