if [`ls $ op_file`];然后返回true,即使找不到文件

时间:2014-02-22 13:00:56

标签: shell

#!/bin/bash

echo "Enter the o/p file name"
read op_file
echo "Enter the count"
read count

echo "OP filename : "
echo $op_file
if [ `ls $op_file` ]; then
 echo "O/P file found"
else
exit 0
fi

我正在尝试检查文件名是否存在。如果文件存在,请继续。虽然上面的代码没有给我错误。它会打印找到的O / P文件,即使ls找不到该文件。

2 个答案:

答案 0 :(得分:1)

在if中使用-e运算符,检查是否存在文件,所以:

if [ -e $op_file ]; then
  echo "O/P file found"
else
  exit 0
fi

答案 1 :(得分:1)

您的脚本可以重构为:

#!/bin/bash
read -p "Enter the o/p file name" op_file
read -p "Enter the count" count
echo "OP filename: $op_file"

if [ -f "$op_file" ]; then
  echo "O/P file found"
else
   exit 1
fi

最好使用-f "$file"检查是否存在文件。另请参阅man test