shell - shell脚本中大括号{}和中括号()的区别

标签 shell brackets braces

我们使用大括号{}来表示变量表达式,例如

NAME="test"

FILE_NAME=${NAME}file

但是我不明白我们在什么场景下使用括号() 假设 nslookup $(hostname) 仅适用于 () 括号。

谁能解释一下吗?

最佳答案

首先是小挑剔:

  • 方括号[]
  • 括号()
  • 大括号{}
  • (双引号)""
  • (单个)引号(撇号)''
  • 反引号``(与波形符〜键相同)

BASh 脚本中使用大括号进行复杂的变量扩展。考虑字符串连接:

STR="hello"
STR2=$STR

STR2 计算结果为“hello”。如果你想让它像“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 跟踪/恢复环境变量、目录的情况非常有用> 而不是 cd

关于shell - shell脚本中大括号{}和中括号()的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30106758/

相关文章:

linux - linux下如何使组内文件的权限与属主相同?

vim - 当有注释掉的大括号时,如何使用 vim 缩进行?

.net - Powershell:调用 .NET 函数总是需要括号吗?

linux - 如何将参数从 bash 文件传递​​给 awk 文件

linux - 如何使用内置的 "sort"程序同时按两个字段(一个数字,一个字符串)排序?

javascript - 函数: reverse[0]?后面的括号是什么意思

database - 如何使用 MS SQL 查找带括号的字符串的最后一部分

c# - 在 visual studio 中创建大括号的快捷方式

linux - 用字符串代替shell中的变量

java - 在Java中显示带有括号和逗号的数组输出?