Shell 脚本的 IF 多个条件

Multiple conditions on IF with Shell Script

我的一个同事检查了一个文件处理脚本,该脚本从我们的数据库中提取数据并将其放在一些 .txt 文件中。

if [ $File_ID < 4 ] || [ $File_ID > 64 ] || [ $File_ID -eq 60 ] && [ $File_ID != 0 ] && [ $File_ID != 1 ]; then

规则:

  1. 如果File_ID = 0,则提取所有文件。
  2. 对于 2 和 3,它应该会失败。
  3. 在 4 到 64 之间它应该通过,但 60 除外。

现在,我正在尝试生成 File_ID 等于 11 的文件,但我弄错了。这个说法有什么问题?

我会使用 case 语句和 if 语句:

if [ "$File_ID" -lt 0 ] || [ "$File_ID" -gt 64 ]; then
  printf 'File_ID %d out of range\n' "$File_ID"
  exit 1;
fi

case $File_ID in
   0) extract-files ;;
   1) printf "You didn't say what to do with 1\n" >&2; exit 1 ;;
   2|3|60) printf 'Error\n' >&2; exit 1 ;;
   *) printf 'Pass\n' ;;
esac