如何在 Bash 中将命令输出保存为变量? Plato区块链数据智能。 垂直搜索。 人工智能。

如何在 Bash 中将命令输出保存为变量?

介绍

在 bash 脚本中,通过存储命令的输出并在以后使用它们,可以方便地将命令的输出分配给变量。

在这篇简短的指南中,我们将了解如何在 Bash 中将命令的输出存储为变量。

设置变量的基础知识

将命令的输出保存为变量是通过 命令替换. 命令替换是一个包装器,它在一个 子壳环境, 并将包装的命令替换为运行该命令的环境的标准输出。 如果连接到引用变量,则可以稍后引用此输出!

命令替换可以通过反引号或带括号的美元符号来实现:

`command`

$(command)

是否存在争论 `命令` (反引号)或 $(命令) (美元符号和括号)应该被用作“最佳实践”。 $(command) 在嵌套中效果很好,并在某些情况下提高了可读性,但您可以在前面的示例中使用任何一种语法。

话虽这么说——在 Bash 中将命令的输出分配给变量非常简单:

VARIABLE=$(command)
echo "${VARIABLE}"

运行 ${variable} 被称为 参数扩展, 并用于评估和获取与引用变量关联的值。

现在让我们看一下为命令设置变量以更改输出颜色的简单示例:

#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"

ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"

echo "${GREEN}Paris"

在代码片段中,我们使用了 tput 命令并分配这些命令的返回值以打印彩色文本。 这 setaf 更改前景颜色,3(绿色)和 9(橙色)是颜色代码。

现在我们将转到另一个包含多个条件的示例,为不同的命令设置变量:

#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"

DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"

DATES=$(date)
echo -e "The script is being run on:n${DATES}n"

CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"

LOCATION=$(ls 
  -l *txt)
echo -e "Saved text file at: ${LOCATION}"

在上面的脚本中, whoami 命令返回当前用户的用户名。 这 uname -a 返回系统信息,并且 date 返回当前时间和日期。

请注意: 我们可以通过在单个嵌套调用中添加多个命令来链接变量赋值。 这 CREATE 变量包含的输出 touch 命令,它依次创建一个文件并将文件名设置为 date +"%d%m%Y 命令。

查看我们的 Git 学习实践指南,其中包含最佳实践、行业认可的标准以及随附的备忘单。 停止谷歌搜索 Git 命令,实际上 学习 它!

最后,我们添加一个 multiline 通过添加反斜杠命令变量赋值概念 () 之间的 ls 命令 -l 标志以仅显示文本文件使用 *.txt. 反斜杠是一个转义字符,它通知 shell 不要解释下一个字符。

echo 命令,我们添加了 -e 标记使用特殊字符,即 n (换行符),在新行中打印输出。

执行脚本后我们得到如下结果:

$ ./variable.sh

结论

在这个简短的指南中,我们了解了如何在 Bash 中将命令的输出设置为变量。 我们已经了解了语法之间的区别 命令替换,注意到可读性的改进 $(command) 基于反引号的替换。 然后,我们看了几个简单赋值和链式/嵌套输出赋值的例子。

时间戳记:

更多来自 堆栈滥用