這裏是我的bash腳本的一個小部分,但它是查找並輸出mydir中的所有文件(如果從存儲數組中有前綴的話)。我注意到奇怪的是,如果我從腳本中取出「-maxdepth 1 -name」,則該腳本完美地工作,否則它只會給我帶有數組中第一個元素的前綴的文件。Bash找到:列出所有帶有for循環前綴的文件
如果有人向我解釋這將是很大的幫助。對不起,如果有一件事顯然愚蠢,我在做。我對腳本相對來說比較陌生。
#!/bin/sh
DIS_ARRAY=(A B C D)
echo "Array is : "
echo ${DIS_ARRAY[*]}
for dis in $DIS_ARRAY
do
IN_FILES=`find /mydir -maxdepth 1 -name "$dis*.xml"`
for file in $IN_FILES
do
echo $file
done
done
輸出:
/mydir/Abc.xml
/mydir/Ab.xml
/mydir/Ac.xml
預期輸出:
/mydir/Abc.xml
/mydir/Ab.xml
/mydir/Ac.xml
/mydir/Bc.xml
/mydir/Cb.xml
/mydir/Dc.xml
工作,謝謝!您能否足夠解釋爲什麼以前的方法不適用於這種方法?或者它只是一個標準的語法? – Karen
@Karen:引用一個不帶下標'[@]'(或等效的[*]')的數組變量只返回* first *元素的值。 – mklement0
@ mklement0謝謝,我已將您的意見加入 –