如果无法找到或读取文件,如何杀死Bash脚本?

时间:2012-10-09 11:59:47

标签: bash

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

2 个答案:

答案 0 :(得分:5)

在阅读之前,检查文件是否存在:

if [ ! -f input ]; then
  echo "File Not found"
  exit 1
fi

答案 1 :(得分: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