关于linux:Shell脚本循环命令行开关和参数

Shell script to loop command line switches and arguments

我正在尝试编写一个bash脚本,该脚本将检查命令行switchess,并将下一个参数用于switches参数。

例子:

1
sh myprogram.sh -s switchArg -p programArg start

在我的脚本中,我试图用这种方式循环它:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if ["$#" -gt 2 ]
then
{
    i=1
    for arg in"$@"
    do
      if ["$arg" =="-s" ] || ["$arg" =="-S" ]
      then
      {
          i=$((i++))
          myArg=$i  # This then gets used later in my script
          continue
      }
      elif ["$arg" =="-p" ] || ["$arg" =="-P" ]
      then
      {
         i=$((i++))
         myArg2=$i  # This then gets used later in my script
         continue
      }
      else
      {
         echo"illegal option: $arg"
      }
   done

   do stuff
}
fi

无论开关的数量如何,我如何检测开关并使用下一个参数作为开关的参数?


您可以使用"shift"删除第一个参数。例如:

1
2
arg1=$1; shift
arg2=$1