【发布时间】:2015-05-07 16:27:43
【问题描述】:
我们使用大括号{} 表示变量表达式,例如
NAME="test"
FILE_NAME=${NAME}file
但我不明白我们在哪些场景中使用括号()
假设 nslookup $(hostname) 仅适用于 () 括号。
谁能解释一下?
【问题讨论】:
-
在美国英语中,这些:
()是括号,这些:[]是括号。
我们使用大括号{} 表示变量表达式,例如
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”。
Additionally, you can use parentheses to execute something in a subshell, 这可能会影响您的环境、PID 等。对于您想要一个“一次性”环境且必须通过 pushd/popd 而不是 @ 来跟踪/恢复环境变量、目录的情况非常有用987654337@等
【讨论】:
()在英国英语中通常被称为“括号”。
[] 在英国英语中总是被明确称为“方括号”。 separatedbyacommonlanguage.blogspot.ca/2006/08/…
${foo} 视为扩展参数的规范 方式更容易一些,而$foo 是一个特殊情况的示例,其中大括号可以删除它,这样做不会产生歧义。
使用括号 ( 执行某些操作。恰好有一个名为 hostname 的程序 - 所以 $(hostname) 会执行它。
尝试which hostname 看看该程序驻留在哪里
【讨论】: