2

casebash スクリプトのステートメントで変数を初期化しようとしていますが、

function cpfiles(){
case $1 in
        a) echo "a" ; source = ${HOME}/dev/a.zip ; dest = 'PROGRA~2\\a.zip';;
        b) echo "b" ; source = ${HOME}/dev/b.zip ; dest = PROGRA~2\\b.zip;;
        *) echo "INVALID MODULE !" ;;
esac

echo ${source} ${dest}
}

しかし、私はこのエラーが発生しています:

[#] cpfiles a
a
bash: =: No such file or directory
bash: dest: command not found...

私は何が欠けていますか?

4

4 に答える 4

0

エラーの原因となっているスクリプトで重要な 2 つのこと:

1. source : シェル変数であり、関数ファイルを現在のシェル スクリプトまたはコマンド プロンプトにロードするために使用できます。指定された FILENAME からコマンドを読み取って実行し、戻ります。

2. Unix の "=" a=b は代入演算子として扱われ、a = b は 2 つの文字列の比較に使用されるか、[[ $str1 == $str2 ] のような条件ステートメントでチェックできます。これは、文字列の等価性チェックの代替方法です。

また、${HOME} の代わりに $HOME で変数の値を取得するのに十分ですが、それを使用している場合、エラーは発生しません。以下のコンテキストを参照してください。

*$ エコー ${SHELL}

/ビン/バッシュ

$ エコー $SHELL

/ビン/バッシュ*

于 2017-04-10T10:18:48.930 に答える