2012-08-22 50 views
1

讀取命令行參數如果我運行bash腳本作爲按名稱

./myscript.sh zone=A build=release 

有什麼方法我可以讀基於參數而不是使用$ 1,$ 2的參數?

+1

你應該看看_getopt_。 – scai

+0

'set -k'使得命令後變量賦值被視爲與命令前變量賦值相同,即作爲對環境的修改。 – chepner

回答

0

號和Unix shell是一個古老的技術,哈希映射的時間,但不能被稱爲他們需要超過1個字節才能實現,所以專業人員不想使用這種浪費的技術。

你還能做什麼?通常的解決方案是getopt(1)

另一種方法是寫入文件和源,所有的選項:

echo "[email protected]" | tr ' ' '\n' > options 
. ./options 

echo "zone=${zone}" 
+0

注意:確保每個選項都進入它自己的行,否則''source' /'.'將失敗。 'eval'也可以工作(不需要額外的文件)。 –

0

希望這是你問的:「成爲時尚」

A="try" 
try="something" 
echo ${!A} 
> something 
0

這是接近你想要什麼。

set -k 
./myscript.sh zone=A build=release 

的行爲一樣

zone=A build=release ./myscript.sh 

就是myscript.sh會看到zonebuild在其環境中給定的值。