%20%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6%E6%97%B6%E5%8F%AF%E4%BB%A5%E6%8D%95%E8%8E%B7%E6%88%96%E6%B6%88%E9%99%A4%E9%94%99%E8%AF%AF%E5%90%97%EF%BC%9F.png)
$(< file)
我可以使用;读取 zsh 中的文件例如:
% print 'Hello, world!' > test
% x=$(< test); print $x
Hello, world!
但是,错误会打印到 stderr;例如:
% x=$(< doesnt-exist); print $x
zsh: no such file or directory: doesnt-exist
# The actual error in my script, for posterity.
% x=$(< /sys/class/hwmon/hwmon4/temp2_input); print $x
zsh: error when reading /sys/class/hwmon/hwmon4/temp2_input: no such device or address
有什么方法可以捕获或消除此错误吗?您可以测试可读性或使用cat 2>&1
并检查退出代码(这就是我现在使用的),但我想知道是否$(< file)
也可以使用。
答案1
即使在进行变量赋值时,您也可以以正常方式重定向。
x=$(< doesnt-exist) 2>/dev/null ; print -r -- $x
那应该保持沉默。