Linux 如何避免在没有访问权限的情况下将cd复制到目录

Linux 如何避免在没有访问权限的情况下将cd复制到目录,linux,bash,unix,csh,Linux,Bash,Unix,Csh,我有一个数组变量tht,它包含文件夹中的所有目录。 我需要cd到$array中的每个目录。当它到达一个不可访问的目录时,程序停止。如何避免这种情况,使循环直接转到下一个目录。代码是 foreach dir ($array) cd $dir echo "directory is $dir" cd - end 请帮忙 只需测试cd是否工作即可 ( if cd $dir 2> /dev/null; then echo in directory $dir # Do oth

我有一个数组变量tht,它包含文件夹中的所有目录。 我需要cd到$array中的每个目录。当它到达一个不可访问的目录时,程序停止。如何避免这种情况,使循环直接转到下一个目录。代码是

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

请帮忙

只需测试cd是否工作即可

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

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

只需测试cd是否工作即可

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

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

如果我没有弄错,您可以使用

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

您可以使用-w测试写访问,使用-x测试超额位。

如果我没有弄错,您可以使用类似

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

您可以使用-w测试写访问权限,使用-x测试超额位。

仅当文件所有者具有读取权限,但我想检查其是否具有组读取权限时,才会回显消息。如何做到这一点?只有当文件的所有者具有读取权限,但我想检查它是否具有组读取权限时,才会回显消息。如何做到这一点?