0

ディレクトリ内のファイルを見つけて別の場所にコピーしようとしています。これが私のスクリプトです。

#!/bin/bash
# fileSearch

array=(a b c d)

for var in array
do
        find ~/ -name $var* -exec cp {} ./test/ \;
done

私は何を間違っていますか?彼はファイルを見つけられません...おそらく引用符付きのものになると思います。

誰でも私を助けることができますか?

ありがとう

4

1 に答える 1

3

これを試して:

#!/bin/bash
# fileSearch

array=(a b c d)

for var in array
do
    echo $var
done

出力:

array

つまり、単一の単語「配列」を含む単語リストをループしているだけです。正しいバージョンでは、配列を展開し、$-symbol (変数を参照することを意味します) を追加する必要があります。

#!/bin/bash
# fileSearch

array=(a b c d)

for var in ${array[@]}
do
    find ~/ -name "$var*" -exec cp {} ./test/ \;
done

また、変数を引用符で囲むのも良い習慣です。つまり、 のような変数を使用するときはいつでも代わり$varに使用してください。"$var"これにより、単一の文字列として扱われるべきスペース (またはその他の「奇妙な」記号) を含む文字列が変数に含まれる場合の多くの問題が回避されます。

于 2012-09-14T11:35:35.783 に答える