介绍
在 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)
基于反引号的替换。 然后,我们看了几个简单赋值和链式/嵌套输出赋值的例子。