1

我有一个数组变量,其中包含文件夹中的所有目录。我需要 cd 到 $array 中的每个目录。bt 当它到达一个不可访问的目录时,程序停止。我怎样才能避免这种情况,以便我的循环简单地转到下一个目录。代码是

foreach dir ($array) 
  cd $dir
  echo "directory is $dir" 
cd - end

请帮忙 !!

4

2 回答 2

6

只需测试 cd 是否有效。

( if cd $dir 2> /dev/null; then
   echo in directory $dir
   # Do other things
fi )

另外,请注意括号。这些导致整个子句在子shell中运行,因此无需 cd 回到原始位置。

于 2013-01-08T18:49:17.643 回答
0

如果我没记错的话,你可以使用类似的东西

if [ -r ${dir} ]
then
  echo "Have read access!"
fi

您可以-w用于测试写访问和-x测试执行位。

于 2013-01-08T18:50:22.907 回答