Bash多个命令行参数

时间:2015-11-24 11:18:51

标签: arrays linux bash if-statement

我希望能够使用一个或多个参数运行我的脚本,并对传递的所有参数执行操作。

到目前为止,我已经能够根据第一个参数运行命令,如下所示:

#/bin/bash

ap=admin
lp=lender

if [[ "$1" = "ap" ]]; then
    echo "### pulling $ap ###"
elif [[ "$1" = "lp" ]]; then
    echo "### pulling $lp ###"
else 
echo "There is no service with that name"
fi

我希望能够使用多个参数运行我的脚本,如下所示,并运行给定的每个参数所需的命令。例如,如果我运行它:

./update.sh ap lp

我希望能够检测到ap和lp,然后执行正确的命令。

总而言之,如果运行脚本的人通过'ap'作为参数,我想拉管理员,如果用户同时通过'ap'和& 'lp'作为参数,我想拉管理员和贷方。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

使用while循环查看参数并使用shift将参数$ N + 1移至$ N.所以在shift之后,第二个参数成为第一个参数。

while [ "$#" -gt 0 ]
do
  if [[ $1 = "ap" ]]
  then
    echo "AP typed"
  elif [[ $1 = "lp" ]]
  then
    echo "LP typed"
  fi
  shift
done

答案 1 :(得分:0)

while [[ $# -gt 0 ]]
   do
       key="$1"
       case $key in
       ap)
               echo "### pulling $ap ###"

       ;;
       lp)
               echo "### pulling $lp ###"

       ;;
       *)
           echo "There is no service with that name"
       ;;
esac
shift
done

这将接受你放置它们的每个顺序中的参数

 $ ./update lp ap
 $ ./update ap lp
 $ ./update lp
 $ ./update ap