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

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

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

sensors | grep "Core" > temp.tmp
input=./temp.tmp
while IFS= read -r line
do
--etc--
done < "$input"

上面的方法很好用,但我需要为临时文件找到一个合适的位置,我想我可以完全避免写入存储。尝试了以下方法

input=`sensors | grep "Core"`
while IFS= read -r line
do
--etc--
done < "$input"

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

..谢谢观看...

答案1

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

sensors | grep "Core" | while IFS= read -r line
do
    command
done

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

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)

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

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

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

相关内容