背景是:
eval TLEN=\${#$1}
if [ $TLEN -gt 35 ]
then
...
fi
我猜它可能被用來找出$ 1的長度。我不知道「\ $ {#$ 1}」的意思。 很久以前我已經閱讀了bash手冊,並且忘記了大部分內容,請解釋$ {something}的含義,我可以隱約記得那個符號是一種常見的模式。
好的,我在手冊中找到它。 「$ {#parameter}」響應計數長度。
背景是:
eval TLEN=\${#$1}
if [ $TLEN -gt 35 ]
then
...
fi
我猜它可能被用來找出$ 1的長度。我不知道「\ $ {#$ 1}」的意思。 很久以前我已經閱讀了bash手冊,並且忘記了大部分內容,請解釋$ {something}的含義,我可以隱約記得那個符號是一種常見的模式。
好的,我在手冊中找到它。 「$ {#parameter}」響應計數長度。
行eval TLEN=\${#$1}
意思是:取第一個參數($ 1),從它讀取另一個參數的數量並計算另一個參數的長度。
如果你的代碼被稱爲腳本或者函數f
像
f 2 qwe
它將計算TLEN爲3,因爲它會採取第一個參數,它指向的第二個參數和第二的長度爲3
計算長度的表達式響應的哪一部分? – Rui
由於eval
是一個命令,它的參數首先進行各種擴展,包括參數擴展。因此,
eval TLEN=\${#$1}
將擴大的$1
值,變量的推測的名稱。如果$1
是foo
,則殼擴展命令
eval TLEN=\${#foo}
報價移除之後,實際被評估的命令是
TLEN=${#foo}
所以TLEN
被設置爲變量的值的長度其名稱是$1
的值。
$ 1 - 傳遞給您的bash腳本的第一個參數。 –
我知道,但都是一樣的感謝。 – Rui