![可以从变量中读取“行”吗?](https://linux22.com/image/918850/%E5%8F%AF%E4%BB%A5%E4%BB%8E%E5%8F%98%E9%87%8F%E4%B8%AD%E8%AF%BB%E5%8F%96%E2%80%9C%E8%A1%8C%E2%80%9D%E5%90%97%EF%BC%9F.png)
我一直在从我创建的文件中读取行,并希望使用变量并避免写入存储。不确定这是否可以轻松完成。工作代码开始如下
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)
有关该<<<
运营商及其同类运营商的更多详细信息,请参阅: