Alb*_*zia 1 bash variable touch
我有这个变量?:
toto=123456
为什么touch "$toto.hihi.log"
有效并创建一个名为123456.hihi.log的文件
但touch "$totohihi.log"
什么都不做??
你需要
touch "${toto}hihi.log"
Run Code Online (Sandbox Code Playgroud)
问题是,如果没有大括号,shell 就无法知道变量名中有多少个字符。因此,它将所有合法字符视为名称的一部分。在这种情况下,这是.
;之前的一切。即外壳使用不存在的变量$totohihi
。
一般来说,使用 shell 选项-x
来查看发生了什么是有帮助的:
set -x
touch "$totohihi.log"
+ touch .log
Run Code Online (Sandbox Code Playgroud)