#echo $LINE |cut -f"${arg}" -d' '
pom=$LINE |cut -f"${arg}" -d' '
我有这两条路。首先是工作,但第二个不是。我想变量得到这个命令的值,因为我想要像字符串一样使用这个值。
答案 0 :(得分:3)
您需要运行第一行,然后将返回的值赋给变量。你可以使用反引号内的命令来执行此操作,如下所示:
pom=`echo $LINE |cut -f"${arg}" -d' '`
第二行不起作用的原因是因为$LINE
中的whats很可能不是有效命令,而管道从命令中获取输出,这就是为什么需要echo
来输出内容$LINE
。
答案 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=
命令`。建议使用foo = $(命令)语法。$()内的反斜杠处理不那么令人惊讶,$()更容易嵌套。请参阅{{3} }
答案 2 :(得分:1)
如果LINE中没有空字段(即没有重复的空格),你也可以使用纯bash:
ITEMS=($LINE)
pom=${ITEMS[arg]}
请注意,在这种情况下,$ arg为零,因此您可能需要使用[arg-1]。