我可以写:
X=""
if [ -f foo.txt ]; then
X=$(<foo.txt)
fi
Run Code Online (Sandbox Code Playgroud)
但这是4行。有没有更简洁的方式来表达这个逻辑?
如果你这样做X=$(< foo.txt),X如果文件不存在,则将为空,但你会收到一条错误消息:
$ X=$(< foo.txt)
-bash: foo.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果您想抑制该错误(以及任何其他错误消息),您可以将 stderr 重定向到/dev/null:
{ X=$(< too.txt); } 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
X之后实际上是空的:
$ declare -p X
declare -- X="
Run Code Online (Sandbox Code Playgroud)