我们对变量表达式使用大括号{}
,例如
NAME="test"
FILE_NAME=${NAME}file
但我不明白我们在哪些场景中使用括号 () 说nslookup $(hostname)
只适用于()
括号有效。
有人可以解释吗?
首先是轻微的挑剔:
[]
()
{}
""
''
``
(与波浪号 ~ 键相同)大括号在 BAsh 脚本中用于复杂的变量扩展。考虑字符串连接:
STR="hello"
STR2=$STR
STR2
评估为“你好”。如果你想让它像“helloWorld”一样。做类似的事情是STR2="$STR2World"
行不通的,所以你使用大括号,即:STR2="${STR}World"
。
至于括号,它们被使用,类似于反引号,`,它将它们之间的文本扩展为命令的文本输出。
如果您想将当前时间存储为字符串怎么办?
STR2=$(date)
现在STR2
存储字符串“Thu May 7 09:32:06 PDT 2015”。
此外,您可以使用括号在子 shell 中执行某些操作,这可能会影响您的环境、PID 等。对于您想要一个“一次性”环境而必须通过pushd
/popd
而不是cd
, ETC。
使用括号(
执行某些操作。恰好有一个名为 hostname 的程序 - 所以 $(hostname) 将执行它。
尝试which hostname
查看该程序所在的位置