Shell 命令替换
在 Shell 脚本中,命令替换是一种将命令的输出作为另一个命令的参数或变量值的方法。命令替换有两种语法:
- 反引号(
`command`
)
- $() 语法(
$(command)
)
反引号语法
1 2
| output=`echo "Hello, World!"` echo $output
|
$() 语法
1 2
| output=$(echo "Hello, World!") echo $output
|
示例
以下是一些使用命令替换的示例:
示例 1:将命令输出赋值给变量
1 2
| current_date=$(date) echo "Current date and time: $current_date"
|
示例 2:将命令输出作为另一个命令的参数
1 2
| files=$(ls) echo "Files in the current directory: $files"
|
示例 3:嵌套命令替换
1 2
| nested_output=$(echo $(date)) echo "Nested command output: $nested_output"
|
注意事项
- 使用 $() 语法比反引号语法更推荐,因为它更易读且支持嵌套。
- 命令替换会捕获命令的标准输出,但不会捕获标准错误输出。
- 如果命令输出包含换行符,可以使用
IFS
(内部字段分隔符)来处理多行输出。
示例:处理多行输出
1 2 3 4 5
| output=$(ls) IFS=$'\n' for file in $output; do echo "File: $file" done
|