2016-09-10 9 views
0

すべてのディレクトリをループし、ディレクトリの名前を配列の名前に変更するbashスクリプトを作成していますが、私の値が正しくインクリメントされていないようです私がbashスクリプトを実行すると、 "(i番目)コマンドが見つかりません"と言います。Bashスクリプト:変数が正しくインクリメントされていません

私のコードは次のとおりです。Unixの値をプレースホルダの値に置き換えました。

#!/bin/bash 

declare -a Unix=(value1 value2 value3 ....); 

i = 0 
for d in */; do 
    echo ${Unix[$i]} 
    #mv $d ${Unix[$i]} 
    (($i+1)) 
done 

答えて

0

あなたは2つのことを間違っています。まず、あなたの問題に答えるために、

(($i+1)) 

(($i+=1)) 

する必要がありますまた、あなたが行にスペース

i = 0 

を削除する必要がありますので、

i=0 
0
のように見えます

まず、お見積もりをしたい場合がありますRディレクトリmvコマンド内の名前、またはあなたは、スペースを含む名前のトラブルに巻き込ま:

mv "$d" "${Unix[i]}" 

見ての通り[]は、「算術文脈」であるとして、それは、$とインデックスでiを付加する必要はありません変数名を展開します。

第2に、増分は何も行いません。iに1を加算して結果を取り除くだけです。代わりにインクリメント演算子を使用できます。

((++i)) 

ここでも、$は不要です。

関連する問題