跳到主要内容

Shell编程汇 与() 还有 ${} 区别在哪?

参考答案:

在Shell编程中,$(), `${} 有各自不同的用途,尽管它们有时可以互换使用,但各自有特定的语境和细微差别。

  1. $()

$() 用于命令替换。它会执行括号内的命令,并将其输出替换到$()所在的位置。这是推荐的方式来执行命令替换,因为它比反引号(`)更易读。

示例:

files=$(ls)
echo $files

上面的代码会列出当前目录下的所有文件和目录,并将它们赋值给变量files。 2. `

反引号(`)也是用于命令替换的,但在现代shell脚本中,它已经被视为旧式的或遗留的语法。推荐使用$(),因为它更易读且更容易嵌套。

示例(与上面的示例等效):

files=`ls`
echo $files
  1. ${}

${} 用于参数扩展和字符串操作。它可以用来获取变量的值、进行字符串的截取、替换等操作。

  • 获取变量值
name="John"
echo ${name}  # 输出 John
  • 字符串操作

    • 截取${string:position:length}
    • 替换${string/substring/replacement}
    • 默认值${variable:-default} 如果variable未设置或为空,则使用default
    • 等等...示例:
string="Hello, World!"
echo ${string:7}        # 输出 World!
echo ${string/World/Planet}  # 输出 Hello, Planet!

总结:

  • $()` 都用于命令替换,但$()是推荐的现代语法。
  • ${} 用于参数扩展和字符串操作。

在使用这些结构时,要注意它们之间的区别和适当的语境,以确保脚本的正确性和可读性。