如何使用cut命令给变量赋值?

3
以下是我使用的命令,将“yellow”赋值给变量“yellow”。我似乎无法使用xargs回显它,但当我将其分配给黄色然后尝试回显时,它会打印出一条空白行。
以下是命令。非常感谢你的帮助!
cut -c 2- color.txt | xargs -I  {}  yellow={};

3
为什么需要使用 cut 命令?使用 read -r yellow < color.txt; yellow=${yellow:1} 有什么问题吗? - gniourf_gniourf
3个回答

4
这里不需要使用xargs
yellow=$(cut -c 2- color.txt)

由于xargs作为子进程运行,因此您无法从中更改外壳状态 - 即使启动了新外壳,该外壳的变量和其他本地状态在退出时也会消失。因此,将shell分配作为传递给xargs的子命令没有意义。


话虽如此,您实际上也不需要cut。在本机bash中,不使用任何子进程或外部工具:

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

(1 是 cut 命令中的 2 列,因为在 bash PE 表达式中第一个字符从 0 开始。)


4

使用命令替换

yellow=$(cut -c 2- color.txt)
$() 语法会将命令的输出结果扩展为变量,并将其分配给该变量。

3

您需要使用:

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

xargs需要执行一个外部的shell二进制文件,而yellow={}并不是真正的二进制文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接