使用Shell脚本执行IF的多个条件

使用Shell脚本执行IF的多个条件,shell,sh,Shell,Sh,我的一位同事检查了一个文件处理脚本,该脚本从我们的数据库中提取数据并将其放在一些.txt文件中 if [ $File_ID < 4 ] || [ $File_ID > 64 ] || [ $File_ID -eq 60 ] && [ $File_ID != 0 ] && [ $File_ID != 1 ]; then if[$File_ID64]|[$File_ID-eq 60]&&&[$File_ID!=0]&&[$File_ID!=1];然后

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

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

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

  • 现在,我正试图生成file_ID等于11的文件,但是我得到了false。这句话怎么了?

    我会用
    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
    

    你的同事应该用。它将警告,例如,
    [$File\u ID<4]
    不是有效的比较。