0

我写了一个小 bash 程序,它需要读取一个名为input. 我希望脚本打印消息file not found并在找不到文件时退出或自行终止。

4

2 回答 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 回答