2017-04-02 7 views
0

引数配列のコピー("[email protected]")の配列内の値を変更しようとしています。のは、次のように私は、スクリプトを実行するとしましょう:$ sh script.sh 1 2 3引数配列のコピーである配列の値を変更します。

これはスクリプトです:

list="[email protected]" 
echo ${list[*]} 
list[1]=4 
echo ${list[*]} 

予想される出力:私は実際に何を得る

1 2 3 
1 4 3 

1 2 3 
1 2 3 4 

任意のアイデア何がこの動作を引き起こし、どのように修正できますか?

答えて

1

list="[email protected]"セットlist普通変数にではなく、アレイ。代わりにlist=("[email protected]")を使用して配列として格納してください。ところで、あなたは一般的に要素内の空白の問題を回避するために、代わりに${list[*]}の、配列の要素を取得するために"${list[@]}"を使用する必要があり、ワイルドカードは、一般的になど

、一致するファイルのリストに展開取得、これは適切な方法には、配列をコピー:

copyarray=("${oldarray[@]}") 
0

ただ見つけたthis答え。コマンドライン引数の配列は非常に正常配列ではなく、次のように最初の実際の配列に変換した:

list=("[email protected]") 
+0

うん、そうです。引数リストを 'parens'で囲みます。 –

関連する問題