/dev/null) 但我读到(例如在 How to read-6ren">
gpt4 book ai didi

bash - 在抑制 "No such file or directory"错误的同时将文件读入变量

转载 作者:行者123 更新时间:2023-11-29 08:54:52 28 4
gpt4 key购买 nike

我想将文本文件内容读入 Bash 变量,如果该文件不存在则抑制错误消息。在 POSIX 中,我会这样做

var=$(cat file 2>/dev/null)

但我读到(例如在 How to read a file into a variable in shell )它是 Bash 中的 Useless Use of Cat。所以,我正在尝试那些:

var=$(< file 2>/dev/null)
var=$(< file) 2>/dev/null

但它第一个不读取现有文件,如果文件不存在,则两者都打印 -bash: file: No such file or directory为什么这不起作用?(特别是:什么完全打破了第一个?)

这是什么工作:

{ var=$(< file); } 2>/dev/null

但是它又丑又笨重。那么,是否有更好的语法,或者这毕竟是对 cat 的有效使用?

最佳答案

使用 BASH 可以很容易地在读取文件之前测试文件是否存在

[ -e file ] && var=$(< file )

正如 Inian 在评论中指出的那样,该文件可能存在,但用户可能没有足够的权限来阅读它。 -r 测试会解决这个问题。

[ -r file ] && var=$(< file )

关于bash - 在抑制 "No such file or directory"错误的同时将文件读入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45568236/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com