Shell 脚本变量使用“”、()、{} 或两者一起表示带空格的值

Raj*_*l D 0 bash shell

shell脚本中使用“”或{}作为变量有什么区别

PATH="\home\user\test dir"
Run Code Online (Sandbox Code Playgroud)

何时使用

"$PATH"
$(PATH)
${PATH}
"${PATH}" 
Run Code Online (Sandbox Code Playgroud)

还有其他用例或方法来定义此变量吗?

Gil*_*not 5

这是一个强制性的示例代码{ }

var=123
echo "${var}xx" # 123xx
echo "$var"xx   # 123xx but not the proper way
echo "$varxx"   # nothing, unknown variable varxx
Run Code Online (Sandbox Code Playgroud)

并且$( )是命令替换:"$(cmd "foo bar")"导致使用参数“foo bar”执行命令“cmd”,并将"$(..)"被输出替换。请参阅http://mywiki.wooledge.org/BashFAQ/002http://mywiki.wooledge.org/CommandSubstitution

始终引用您的变量。

学习如何在shell中正确引用,这非常重要:

“双引号”包含空格/元字符的每个文字和每个扩展:"$var", "$(command "$var")", "${array[@]}", "a & b"。用于'single quotes'代码或文字$'s: 'Costs $5 US'ssh host 'echo "$HOSTNAME"'. 请参阅
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words