我写了一个小 bash 程序,它需要读取一个名为input
. 我希望脚本打印消息file not found
并在找不到文件时退出或自行终止。
问问题
285 次
2 回答
5
在阅读之前,检查文件是否存在:
if [ ! -f input ]; then
echo "File Not found"
exit 1
fi
于 2012-10-09T12:02:39.357 回答
1
使用 Bash 退出处理程序
您可以使用 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
可能的测试条件的更完整列表,请参阅。
于 2012-10-09T12:16:52.220 回答