2014-01-27 92 views
3

背景是:

eval TLEN=\${#$1} 
if [ $TLEN -gt 35 ] 
then 
    ... 
fi 

我猜它可能被用來找出$ 1的長度。我不知道「\ $ {#$ 1}」的意思。 很久以前我已經閱讀了bash手冊,並且忘記了大部分內容,請解釋$ {something}的含義,我可以隱約記得那個符號是一種常見的模式。

好的,我在手冊中找到它。 「$ {#parameter}」響應計數長度。

+1

$ 1 - 傳遞給您的bash腳本的第一個參數。 –

+0

我知道,但都是一樣的感謝。 – Rui

回答

2

eval TLEN=\${#$1}意思是:取第一個參數($ 1),從它讀取另一個參數的數量並計算另一個參數的長度。

如果你的代碼被稱爲腳本或者函數f

f 2 qwe 

它將計算TLEN爲3,因爲它會採取第一個參數,它指向的第二個參數和第二的長度爲3

+0

計算長度的表達式響應的哪一部分? – Rui

0

由於eval是一個命令,它的參數首先進行各種擴展,包括參數擴展。因此,

eval TLEN=\${#$1} 

將擴大的$1值,變量的推測的名稱。如果$1foo,則殼擴展命令

eval TLEN=\${#foo} 

報價移除之後,實際被評估的命令是

TLEN=${#foo} 

所以TLEN被設置爲變量的值的長度其名稱是$1的值。