ls命令在位置参数上的退出状态

时间:2014-11-23 13:53:57

标签: linux bash function arguments

我有一个功能' exit_status'这需要两个参数。 $ 1是一个目录(用于备份rsync脚本),$ 2(getStatus)用于设置$ 1的ls的退出状态并将值返回给调用者。如果退出状态等于0,则备份将开始。

我想重写此函数以获取至少3个位置参数,源和目标路径并返回退出状态。我希望该函数能够处理我想要传递两个以上目录的事件来检查。也许我可能会传递几个源目录和目的地。

我没有设置返回退出状态的函数,但我只是寻找检查所有目录的退出状态为0的最佳方法,以便调用者执行备份。如果一个或多个目录具有非零返回退出。

#!/usr/bin/bash

# Drive paths
testOffSiteBkup1="/mnt/hotswp/testoffsitebkup1/"

exit_status () {
  local _cmd="/bin/ls -al $1 > /dev/null"
  local _getStatus=$2
  eval $_cmd
  local _status=$?
  eval $_getStatus=$_status
}

exit_status $testOffSiteBkup1 getStatus
if [ $getStatus -eq 0 ] ; then
  echo "$testOffSiteBkup1 is present."
  rsync ......
else
  echo "$testOffSiteBkup1 is NOT present."
  exit
fi

1 个答案:

答案 0 :(得分:0)

您可以在没有函数的情况下执行此操作,并使用测试命令

执行ls -l命令

例如,要检查源目录和目标目录是否存在,可以使用以下两行

test -d $source && test -d $destination 
status=$(echo $?)