我想要执行以下循环操作,以在路径(1e-04、3e-07等)中找到所有“ * e-0 [1-9]”目录。如果找到这样的目录,我希望执行一些命令。我的问题是if条件,它使用sh或bash给我不同的错误。我为sh遇到的错误是“ [:意外序列”,而对于bash则是“ [:过多参数”。我在stackoverflow的其他问题中发现了此问题,但是这些问题主要与if条件中从“ ==”到“ =”的转换有关,在这里不是这种情况。问题部分如下所示:
for i in `seq 1 9`;
do
directory=*e-0$i
// directory="*e-0"+$i // also tried things like that
if [ -d ${directory} ] // THIS is the line stated in the error
then
echo $directory
fi
done
提前致谢。
if [ -d "$directory" ]
或更简单的方法来处理整个循环:
shopt -s nullglob
for directory in *e-0[1-9]/
这不需要检查是否存在匹配项,因为循环主体将仅针对匹配路径运行。斜杠确保仅匹配目录
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句