我周圍中搜索發現,getops只接收零個或一個說法,但我真的需要做這項工作,getops 1個選項以接收2個參數
我需要讓我的腳本運行是這樣的:。 /script.sh - 一個字符串整數
它的作用是將字符串和整數寫入文本文件。
我試過這段代碼:
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功率內部文本文件0000
結果:功率; 3點
任何建議?
最近剛開始學習的bash腳本
爲什麼你使用參數的*索引*? – 2014-09-23 16:22:44
你的意思是OPTIND? ..我認爲我可以這樣工作,但我知道它不對.. – user3632739 2014-09-23 16:25:17
@KarolyHorvath得到的是'$ {OPTIND}'是要查看的下一個索引,而不是該參數的值。你試圖用'eval'解決這個問題,但錯過了額外的'\ $'必要的。但這不是一個好的方法。改爲使用'$ {@:$ OPTIND:1}'。另外我認爲你在那裏轉移得太多了。我認爲你想「轉移」來「吞下」一個額外的論據。雖然我個人認爲這是一個糟糕的設計。 – 2014-09-23 16:28:28