Shell脚本变量${}与命令$()替换区别小结

作者:

在Shell脚本中,取变量值使用 ${},而 $() 用于命令替换。两者有本质区别:

${} – 变量替换

name="John"
echo "Hello, ${name}"    # 输出: Hello, John
echo "Hello, $name"      # 也可以,但建议用${}更清晰

# ${} 的优势场景:
file="test.txt"
echo "${file}.bak"       # 明确变量边界,输出: test.txt.bak
echo "$file.bak"         # 也能工作,但不够清晰

# 高级变量操作
path="/home/user/file.txt"
echo "${path##*/}"       # 获取文件名: file.txt
echo "${path%/*}"        # 获取目录: /home/user
echo "${name:-Guest}"    # 默认值: 如果name为空则用Guest

$() – 命令替换

# 执行命令并获取输出
current_date=$(date)
file_count=$(ls | wc -l)
echo "今天日期: $current_date"
echo "文件数量: $file_count"

# 嵌套使用
content=$(cat $(find . -name "*.txt" | head -1))

主要区别

特性 ${} $()
用途 变量替换 命令替换
内容 变量名 要执行的命令
返回值 变量的值 命令的标准输出
例子 ${var} $(ls -l)

实际使用建议

# 推荐写法
name="Alice"
greeting="Hello, ${name}! Today is $(date)."

# 复杂例子
backup_dir="/backup/$(date +%Y%m%d)"
files_to_backup=$(find /home -name "*.important" 2>/dev/null)

echo "备份目录: ${backup_dir}"
echo "找到 ${#files_to_backup[@]} 个重要文件"

总结:用 ${} 获取变量值,用 $() 执行命令并获取输出结果。

到此这篇关于Shell脚本变量${}与命令$()替换区别小结的文章就介绍到这了,更多相关Shell 变量${}与命令$()内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

您可能感兴趣的文章:

  • Shell中的${}、##和%%使用范例
  • Shell脚本中$符号的几种用法小结
  • Shell特殊变量(Shell $#、$*、$@、$?、$$)的使用
  • 浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释
  • 详解Shell 脚本中 “$” 符号的多种用法
  • Shell $0, $#, $*, $@, $?, $$和命令行参数的使用
  • 详解Shell $*和$@之间的区别
  • Shell $?获取函数返回值或者上一个命令的退出状态
  • 区分shell中的 反引号、$()和${}
  • shell脚本中$符号的命令使用汇总
  • PowerShell中的特殊变量$null介绍和创建多行注释小技巧

站内搜索