可以从变量中读取“行”吗?

Jos*_*son 3 bash

我一直在从我创建的文件中读取行,并希望使用变量并避免写入存储。不确定这是否可以轻松完成。工作代码开始如下

sensors | grep "Core" > temp.tmp
input=./temp.tmp
while IFS= read -r line
do
--etc--
done < "$input"
Run Code Online (Sandbox Code Playgroud)

以上工作正常,但我需要为临时文件找到一个合适的位置,并认为我可以完全避免写入存储。尝试了以下

input=`sensors | grep "Core"`
while IFS= read -r line
do
--etc--
done < "$input"
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为换行符被删除,并且变量有一个巨大的“行”,可以一次全部读入。变量字符串有“)”,它以正确的位置结尾以用作分隔符,但“读取”键在换行符上。有什么容易解决的吗?

..感谢您的关注...

ter*_*don 5

你甚至不需要变量,更不用说文件了:

sensors | grep "Core" | while IFS= read -r line
do
    command
done
Run Code Online (Sandbox Code Playgroud)

但是,是的,您也可以从变量中读取:

input=$(sensors | grep Core)
$ while IFS= read -r line; do echo "$line"; done <<<"$input"
Core 0: +80.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +80.0°C (high = +100.0°C, crit = +100.0°C)
Core 2: +81.0°C (high = +100.0°C, crit = +100.0°C)
Core 3: +80.0°C (high = +100.0°C, crit = +100.0°C)
Run Code Online (Sandbox Code Playgroud)

有关<<<运营商及其兄弟的更多详细信息,请参阅:

如何使用重定向运算符判断将哪个参数提供给命令?

shell 的控制和重定向操作符是什么?