2012-09-14 78 views
0

我嘗試在目錄中找到文件,並將它們複製到其他地方,這是我的腳本:linux下查找文件,並複製到目錄

#!/bin/bash 
# fileSearch 

array=(a b c d) 

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

我到底做錯了什麼?他不會找到任何文件... 我認爲這可能會與引號。

任何人都可以幫助我嗎?

感謝

+1

調試提示:將shebang更改爲'#!/ bin/bash -x'並調查輸出 –

+0

@Fredrik:最好使用'set -x'代替,您的方法不可移植。 –

+0

確實,但[KISS](http://en.wikipedia.org/wiki/KISS_principle)直到需要 –

回答

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"。這可以防止當變量包含應該被視爲單個字符串的空格(或其他「奇怪」符號)的字符串時出現很多問題。