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

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

${} - 变量替换

bash 复制代码
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

$() - 命令替换

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

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

主要区别

特性 {} ()

用途 变量替换 命令替换

内容 变量名 要执行的命令

返回值 变量的值 命令的标准输出

例子 {var} (ls -l)

实际使用建议

bash 复制代码
# 推荐写法
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[@]} 个重要文件"

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

相关推荐
承渊政道1 天前
【MySQL数据库学习】MySQL基本查询(下)
数据库·学习·mysql·leetcode·bash·数据库开发·数据库系统
ziyitty2 天前
解决Windows下Bash调用Python输出中文乱码的问题
windows·python·bash
一碗白开水一2 天前
【训练技巧】bash: conda: command not found:conda 没有适配环境
开发语言·conda·bash
utf8mb4安全女神3 天前
怎么写shell/bash脚本【if嵌套】【case】【while死循环】【while嵌套if】【for】【随机数】
开发语言·bash
shandianchengzi3 天前
【记录】VSCode|Windows 下 VS Code 配置 Git Bash 为默认终端完整教程
windows·git·vscode·bash
承渊政道3 天前
【MySQL数据库学习】MySQL基本查询(上)
linux·数据库·学习·mysql·bash·数据库开发·数据库系统
小怪不太怪~3 天前
本地项目上传到GitHub--小怪教程(Git Bash实操+常见报错解决
git·github·bash
楚枫默寒7 天前
Linux 编辑文件后自动添加修改日期
linux·运维·bash
日晨难再8 天前
C语言&Python&Bash&Tcl:全局变量和局部变量
c语言·python·bash·tcl
闲猫8 天前
SSH 黑屏配置试用环境机器,受限bash和自定义shell
运维·ssh·bash