BASH args与DIR1 DIR2 DIR3

时间:2013-12-06 22:47:29

标签: bash if-statement for-loop while-loop

我正在尝试检查是否存在我们从args获取的文件夹(目录)。 例如:

./file.sh Dir1 Dir2 Dir3 etc..

所以我必须检查目录(Dir1 $ 1)是否存在然后做某事然后我应该跳到下一个args(我们得到的目录,$ 2)并做同样的事情......等等。

我知道这样做:

检查文件夹存在

if [ -d $* ];
then
echo "The specified folders exists"
for item in $LOCATION/*
do
.....
done


else

echo "The specified folders does NOT exists, Iam EXITING"

exit 0

fi

但就像我正在检查所有文件夹一样,如果其中一个不存在,他就会退出。所以我希望他一个接一个地检查,当他得到一个不退出时,他应该停止。

2 个答案:

答案 0 :(得分:0)

您只需要使用$@单独遍历每个目录,而不是使用$*一次性检查所有目录:

for dir in "$@"; do
  if [[ -d "$dir" ]]; then
    # and so on

答案 1 :(得分:0)

for DIR in "$@" ; do
  if [ ! -d "$DIR" ] ; then
    echo "$DIR does not exist.  I am EXITING"
    exit 1
  fi
  echo "$DIR exists, continuing on."
  ... add whatever code you want to do on $DIR here ...
done