我写了一个小的bash程序,需要读取名为input
的文件。我希望脚本打印消息file not found
并在无法找到文件时退出或终止。
答案 0 :(得分:5)
在阅读之前,检查文件是否存在:
if [ ! -f input ]; then
echo "File Not found"
exit 1
fi
答案 1 :(得分:1)
您可以使用Bash的set -e
选项自动处理大多数类似情况,系统生成(但通常是明智的)错误消息。例如:
$ set -e; ls /tmp/doesnt_exist
ls: cannot access /tmp/doesnt_exist: No such file or directory
请注意,在显示错误消息后,-e选项还将导致当前shell立即退出并显示非零退出状态。这是一种快速而肮脏的方式来获得你想要的东西。
如果您确实需要自定义消息,那么您希望使用测试条件。例如,要确保文件存在且可读,您可以使用类似于以下内容的文件:
if [[ -r "/path/to/input" ]]; then
: # do something with "input"
else
# Send message to standard error.
echo "file not found" > /dev/stderr
# Exit with EX_DATAERR from sysexits.h.
exit 65
fi
有关可能的测试条件的更完整列表,请参阅man 1 test
。