如何使用cut为变量赋值?

时间:2014-11-13 19:00:01

标签: bash shell unix terminal

以下是我用来分配"黄色"到变量黄色。我似乎可以使用xargs回应它,但是当我将它指定为黄色然后尝试回显它时会打印出一个空行。

以下是命令。非常感谢您的帮助!

cut -c 2- color.txt | xargs -I  {}  yellow={};

3 个答案:

答案 0 :(得分:4)

此处不需要xargs

yellow=$(cut -c 2- color.txt)

因为xargs作为子进程运行,所以你实际上无法做任何改变shell状态的事情 - 即使你启动一个新shell,shell的变量和其他本地状态也会消失退出。因此,当子命令传递给xargs时,Shell赋值没有意义。


那就是说,你也不需要cut。在本机bash中,不使用子进程或外部工具:

read color <color.txt
yellow=${color:1}

1与剪切中2的列相同,因为bash PE expressions以第一个字符0开头。)

答案 1 :(得分:4)

使用command substitution

yellow=$(cut -c 2- color.txt)

$()语法扩展为命令的输出,然后将其分配给变量。

答案 2 :(得分:3)

您需要使用:

yellow=$(cut -c 2- color.txt)

xargs需要执行外部shell二进制文件,而yellow={}实际上不是二进制文件。