【发布时间】:2013-05-04 08:18:12
【问题描述】:
我正在尝试编写一个 bash 脚本来检查命令行开关并将下一个参数用于开关参数。
例子:
sh myprogram.sh -s switchArg -p programArg start
在我的脚本中,我试图以这种方式循环它:
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
如何检测开关并使用下一个参数作为开关的参数而不管开关的数量是多少?
【问题讨论】:
-
谢谢,好像是金票。
-
您确实意识到
{和}是不必要的,对吧?它们似乎让你忘记了for循环中的fi。 -
这个答案stackoverflow.com/a/16454668/632407 完全符合您的要求。仅将
getopts和case中的“a”和“b”替换为“s”和“p”