bash 脚本中将命令输出存储到变量163


在 bash 脚本中,我们可以使用$(...) 命令替换语法将命令的输出捕获到变量中。该语法本质上将命令的结果视为一个字符串,我们可以将其分配给变量。

以下是一个使用$(...) 语法获取当前工作目录路径的示例:```bash
# 获取当前工作目录的路径
cwd=$(pwd)
```

现在,我们可以使用变量cwd来访问当前工作目录的路径。

此外,我们可以使用command | tee var语法将命令的输出管道到文件中并同时将其存储到变量中。例如,以下命令获取ls命令的输出并将其同时存储在变量output和文件中:```bash
# 获取 ls 命令的输出并存储到 output 和 中
output=$(ls | tee )
```

在某些情况下,我们可能需要捕获命令输出的错误消息。我们可以使用command 2>&1 | tee var语法来实现这一点。此语法将命令的输出和错误消息都管道到文件中,并同时将其存储到变量中。例如:```bash
# 获取 ls -l 命令的输出和错误消息
output=$(ls -l 2>&1 | tee )
```

除了使用$(...) 语法,我们还可以使用backticks (`) 来捕获命令输出。但是,backticks已被弃用,建议使用$(...) 语法。

需要注意的是,如果命令返回空输出,变量将为空字符串。我们可以使用-n选项检查变量是否为空,如下所示:```bash
if [ -n "$var" ]; then
# 变量不为空
else
# 变量为空
fi
```

要将多行输出存储到变量中,我们可以使用换行符 () 将其连接起来。例如,以下命令获取ls -l命令的输出并将其存储到变量output中,每行一个条目:```bash
# 获取 ls -l 命令的输出,每行一个条目
output=$(ls -l | tr '' '\0' | xargs -0 echo)
```

以下是一些将命令输出存储到变量中的其他示例:* 获取当前日期和时间:
```bash
date=$(date +%Y-%m-%d %H:%M:%S)
```
* 获取系统主机名:
```bash
hostname=$(hostname)
```
* 获取文件大小:
```bash
filesize=$(stat -c %s filename)
```
* 获取文件内容:
```bash
filecontent=$(cat filename)
```

掌握将命令输出存储到变量的能力是编写高效 shell 脚本的关键。通过遵循这些步骤和示例,您可以轻松地将命令输出捕获到变量中,以便在脚本中进一步处理和使用。

2024-12-21


上一篇:Bash 脚本创建文件夹:全面指南

下一篇:Bash 脚本在 Linux 中的执行