运行带有许多参数的bash脚本

时间:2015-10-09 02:35:49

标签: bash

我的系统有超过20个网络设备备份运行配置到备份服务器。在服务器端,我必须检查备份作业是否仍在工作。所以我有这个脚本:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

device="$1"
backupdir="/backup/$device"
latestbackup="`find $backupdir -mmin -1440 -name "$device*"`"
if [[ -f $latestbackup ]];
 then
  echo "`date` - $device - latest backup is $latestbackup"
 else
  echo "`date` - $device - backup not working"
fi

所以我可以使用以下语句运行此脚本:

./backup.sh router1

是否有更多参数使这个脚本可用? (超过20岁)喜欢:

./backup.sh router1 router2 router3 ...

2 个答案:

答案 0 :(得分:2)

您可以循环运行脚本,每次使用另一个参数:

for x in router1 router2 router3 ...; do ./backup.sh $x; done;

答案 1 :(得分:0)

您可以在此处使用$@特殊参数 - 它表示整个参数字符串(第一个参数和更晚的参数)以及for循环。

代码如下所示:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

for device in "$@"; do
  backupdir="/backup/$device"
  latestbackup="`find $backupdir -mmin -1440 -name "$device*"`"
  if [[ -f $latestbackup ]];
    then
    echo "`date` - $device - latest backup is $latestbackup"
  else
    echo "`date` - $device - backup not working"
  fi
done