getops 1选项接收2个参数

时间:2014-09-23 16:20:11

标签: bash getopts

我在周围搜索时发现getops只收到零或一个参数,但我真的需要做这个工作,

我需要让我的脚本运行如下:./ script.sh -a string integer

它的作用是将字符串和整数写入文本文件。

我试过这段代码:

 while getopts a:d opt
 do
 case "$opt" in

 a) na1=$OPTARG
    eval "na2=${OPTIND}"
    shift 2
    ;;

 d) ./viewS.sh;;

 esac
 done

if [ $isdef -eq 0 ]
then
    echo "$na1;$na2" >>PBDB.txt

fi

我可以将字符串部分写入文本文件,但整数只会保持结果为" 3"。

示例:./ script.sh -a power 0000

结果在textfile中:power; 3

有什么建议吗?

刚刚开始学习bash脚本

1 个答案:

答案 0 :(得分:0)

假设您的标记准确无误(您未使用/ bin / sh),请更改

eval "na2=${OPTIND}"

使用"间接变量"

na2=${!OPTIND}

使用eval,您需要eval na2=\$$OPTIND,但这更加丑陋