2011-11-07 156 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