我需要$成為 variable 的函式$a,所以$($a)會相等$value_of_a(因此可以列印數字“a”下的命令的 OPTIONS)。
例如:如果a=5我需要那個 bash 呼叫$5($5是程式輸入終端時的 OPTION5;例如在
./hello.sh qq ww ee rr tt
“tt”是選項№5),所以我需要
echo $5
但我不知道如何讓它通過a而不是通過$5手動輸入
我試過這樣的東西
"${$a}"
這個
"${0 $a}"
后來甚至發現eval:
eval b=( '$'"$a" )
$b所以在$b's place稱呼地方 " $-->value_of_a_here<--"
但eval只給出第一個數字,所以 if a=11then$b列印 OPTION1|1,因為它會$1(1作為字串添加)而不是$11.
所以如果有
./hello.sh q w e r t y u i o p g
a=11
eval b=( '$'"$a" )
echo $b
那么輸出將是
q1
而不是
g
似乎更大,$9一個人根本無法做到。可能嗎?(我聽說帶有發送選項的命令的 1 行受到 32 個位元組的限制,或者類似的東西;也許它就在這里?)
有人可以幫忙嗎?
uj5u.com熱心網友回復:
您需要使用大括號來訪問 9 以上的位置引數。
此外,bash 對間接使用特殊語法:
$ set -- q w e r t y u i o p g
$ echo $11
q1
$ echo ${11}
g
$ a=11
$ echo $a
11
$ echo ${$a}
bash: ${$a}: bad substitution
$ echo ${!a}
g
$
您讀到的 32 位元組限制可能是指“爆炸路徑”。我目前無法找到最終參考,但Perl 檔案指出:
從歷史上看,一些作業系統
#!在 32 個字符后默默地切斷了內核對該行的解釋
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/523735.html
標籤:linux重击壳变量评估
上一篇:更改矩陣檔案的結構
