2011-11-07 173 views
0
 #echo $LINE |cut -f"${arg}" -d' ' 
    pom=$LINE |cut -f"${arg}" -d' ' 

我有這條兩條線。首先是工作,但第二個沒有。我想變量得到這個命令的值因爲我想使用這個值就像字符串。帶命令值的Bash設置變量

回答

3

您需要運行第一行,然後將返回的值賦給變量。爲此,您可以反引號裏面的命令,就像這樣:

pom=`echo $LINE |cut -f"${arg}" -d' '` 

第二行不工作的原因,是因爲什麼在$LINE很可能不是一個有效的命令,和管道需要從命令,其輸出這就是爲什麼您需要echo才能輸出$LINE的內容。

+0

thx :)這是結束我的腳本的最後一件事:) –

1

如果在LINE沒有空字段(即沒有連續的空格),你也可以使用純慶典:

ITEMS=($LINE) 
pom=${ITEMS[arg]} 

注意$ arg是基於在這種情況下爲零,所以你可能需要使用[ARG-1]。

2

這種代碼氣餒:

pom=`echo $LINE |cut -f"${arg}" -d' '` 

贊成:。

pom=$(echo "$LINE" | cut -f"${arg}" -d' ') 

反引號() is used in the old-style command substitution, e.g. foo= command`的富= $(命令)語法建議,而不是反斜槓處理在$()內不會令人驚訝,並且$()更容易嵌套。請參閱http://mywiki.wooledge.org/BashFAQ/082