我正试图从"upper/lower/boo.txt"获取字符串"boo"并将其分配给变量.我在努力
NAME= $(echo $WHOLE_THING | rev | cut -d "/" -f 1 | rev | cut -d "." -f 1)
Run Code Online (Sandbox Code Playgroud)
但它是空的.我究竟做错了什么?
不要那样做.更高效的是使用内置shell操作而不是诸如cut和之类的进程外工具rev.
whole_thing=upper/lower/boo.txt
name=${whole_thing##*/}
name=${name%%.*}
Run Code Online (Sandbox Code Playgroud)
有关bash中字符串操作的最佳实践的一般性介绍,请参阅BashFAQ#100 ; 有关参数扩展的bash-hackers页面,请参阅此处使用的技术的更集中的参考.
现在,就原始代码不起作用的原因而言:
var=$(command_goes_here)
Run Code Online (Sandbox Code Playgroud)
...是正确的语法.相比之下:
var= $(command_goes_here)
Run Code Online (Sandbox Code Playgroud)
...导出一个var在运行时命名的空环境变量command_goes_here,然后在运行输出时command_goes_here作为自己的命令.
为了显示另一个变体,
var = command_goes_here
Run Code Online (Sandbox Code Playgroud)
... var作为命令运行,=作为第一个参数,command_goes_here作为后续参数.也就是说,空白很重要.:)
| 归档时间: |
|
| 查看次数: |
1903 次 |
| 最近记录: |