我想做一些类似下面的循环来查找路径中的所有“* e-0 [1-9]”目录(1e-04,3e-07等等......)。如果找到这样的目录,我想要执行一些命令。我的问题是if条件,它使用 sh 或 bash 给出了不同的错误。我得到的 sh 错误是“[:意外序列”, bash 是“[太多参数”]。我在stackoverflow中的不同问题中发现了这个问题,但是这些问题主要与if-condition中从“==”到“=”的转换有关,这不是这里的情况。问题部分如下所示:
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
提前致谢。
答案 0 :(得分:4)
if [ -d "$directory" ]
或整个循环的更简单的方法:
shopt -s nullglob
for directory in *e-0[1-9]/
这不需要检查是否匹配,因为循环体只会针对匹配路径运行。尾部斜杠确保它只匹配目录