将echo和cut命令分配给变量

时间:2015-06-19 23:09:04

标签: bash cut

我正在尝试从“upper / lower / boo.txt”获取字符串“boo”并将其分配给变量。我在尝试

NAME= $(echo $WHOLE_THING | rev | cut -d "/" -f 1 | rev | cut -d "." -f 1)

但它是空的。我做错了什么?

1 个答案:

答案 0 :(得分:7)

根本不这样做。更高效的是使用内置shell操作而不是cutrev等进程外工具。

whole_thing=upper/lower/boo.txt
name=${whole_thing##*/}
name=${name%%.*}

有关bash中字符串操作的最佳做​​法的一般性介绍,请参阅BashFAQ #100,或the bash-hackers page on parameter expansion以获得有关此处所用技术的更集中的参考。

现在,就原始代码无效的原因而言:

var=$(command_goes_here)

...是正确的语法。相比之下:

var= $(command_goes_here)

...在运行var时导出名为command_goes_here的空环境变量,然后在运行command_goes_here输出作为自己的命令时。< / p>

要显示另一个变体,

var = command_goes_here

...运行var作为命令,=作为其第一个参数,command_goes_here作为后续参数。也就是说,空白很重要。 :)