这里是我的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谢谢,我已将您的意见加入 –