我可以写:
X=""
if [ -f foo.txt ]; then
X=$(<foo.txt)
fi
但这是4行。有没有更紧凑的方式来表达这种逻辑?
答案 0 :(得分:2)
在文件存在检查之后,您可能希望使用此行来表示成功/错误:
[[ -f foo.txt ]] && s=$(<foo.txt) || s=''
如果文件存在,将执行 s=$(<foo.txt)
,否则将执行s=''
。
答案 1 :(得分:1)
如果仅执行X=$(< foo.txt)
,则如果文件不存在,X
将为空,但是您会收到一条错误消息:
$ X=$(< foo.txt)
-bash: foo.txt: No such file or directory
如果您想禁止显示该消息(以及其他任何错误消息),则可以将stderr重定向到/dev/null
:
{ X=$(< too.txt); } 2> /dev/null
X
实际上此后为空:
$ declare -p X
declare -- X="