我有以下if语句。当文件夹中同时包含csv文件和zip文件时,它给我语法错误。但是,当我一个人使用csv文件或单独使用zip文件或不存在任何文件时,它可以工作。

我不确定是什么原因导致以下命令中的语法错误:

if [ -f ctf_error_report_??_????????????.csv -o -f ctf_error_report_??_????????????.???.zip ];
then
     echo  "Successful"
else
     echo  "Problem"
fi
exit 0

关于这个有什么见解吗?

最佳答案

这是检查文件的危险方式。如果您在该目录中碰巧有多个匹配项,则它将不起作用,因为每个文件将成为一个单独的参数,与文本的语法不匹配。更好的方法(虽然不是万无一失)是这样的:

set ctf_error_report_??_????????????.csv
csv_file=$1
set ctf_error_report_??_????????????.???.zip
zip_file=$1

if [ -f "$csv_file" -o -f "$zip_file" ]
then
  echo  "Successful"
else
  echo  "Problem"
fi

关于linux - KornShell脚本中的if语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7789207/

10-13 02:07
查看更多