很久很久以前,我曾经进行过 bash 编程,但在一段时间后,我转向了其他编程语言。我的工作要求我查看 bash 脚本,我发现了我试图理解的这段代码。
for var in $(echo $ENV_VARS | cat my_env_vars.txt );导出 $var 完成
我似乎找不到太多“cat”命令作为管道目标的示例,因此我无法理解原作者将 echo 命令的结果通过管道传输到“cat”命令的输出上的意图。有人可以帮忙解释一下发生了什么事吗?
我确实尝试通过设置 ENV_VARS 来运行代码,但我发现只有“my_env_vars.txt”文件的内容在“for”循环内进行评估。那么在这里管道“echo”的结果有什么用呢?
答案1
尝试:
echo $ENV_VARS | cat - my_env_vars.txt
as第-
一个参数指示cat
将其标准输入读取为第一个文件(并将数据写入其标准输出,然后按照命令中出现的顺序读取命令行上的任何文件名(并将其写入其标准输出)线。
参数也-
可以出现在之后。 my_env_vars.txt
(但是,虽然在命令行上多次命名文件可以cat
多次打开和读取该文件,但对于标准输入 ( ) 来说并非如此-
)