我在周围搜索时发现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脚本
答案 0 :(得分:0)
假设您的bash标记准确无误(您未使用/ bin / sh),请更改
eval "na2=${OPTIND}"
使用"间接变量"
na2=${!OPTIND}
使用eval,您需要eval na2=\$$OPTIND
,但这更加丑陋