我正在写一个会输入参数的bash脚本,命令看起来像这样:
command -a -b -c file -d -e
我想检测一个特定的参数(-b)及其具体位置($ 1,$ 2,$ 3)
#! /bin/bash
counter=0
while [ counter -lt $# ]
do
if [ $($counter) == "-b" ]
then
found=$counter
fi
let counter+=1
done
问题在$($counter)
上升。有没有办法使用$counter
来调用参数的值?例如,如果counter=2
,我想调用参数$2
的值。 $($counter)
不起作用。
答案 0 :(得分:2)
您可以在不使用getopts
的情况下完成此操作(但仍然建议这样做),方法是重新处理循环。
counter=1
for i in "$@"; do
if [[ $i == -b ]]; then
break
fi
((counter+=1))
done
直接迭代参数,而不是迭代参数位置。
bash
也允许使用以下语法进行间接参数扩展:
#! /bin/bash
counter=0
while [ counter -lt $# ]
do
if [ ${!counter} = "-b" ] # ${!x} uses the value of x as the parameter name
then
found=$counter
fi
let counter+=1
done