2009-06-18 19 views
1

私はBASHからASH(Almquist SHell)にスクリプトを移植しようとしていますが、間接参照に関する問題が発生しています。 ASH(またはDASH)の下で実行すると、以下の機能ASH変数間接参照

cmd() { 
    # first argument is the index to print (ie label) 
    arg=$1 
    # ditch the first argument 
    shift 
    # print the label (via indirect reference) 
    echo "${!arg}" 
} 

これはBASHの下で期待通りに動作しますが、「悪い代替構文エラー」を生成し、次の出力

cmd 1 one two three 
one 
cmd 2 one two three 
two 
cmd 3 one two three 
three 

を生成する必要があります。これはうまくいくはずですか?そうでない場合、間接参照を使用する代わりに使用できますか?

答えて

1

あなたはevalを試みることができる:

cmd() { 
    arg=$1 
    shift 
    eval "echo \$$arg" 
} 
+0

これは私が思い付いたほぼ正確であるだけ "$(evalのエコー\ $$引数)" エコーを掲示した後 – ctuffli

関連する問題