文件存在时“:没有这样的文件或目录”

时间:2013-10-06 21:40:09

标签: unix ksh

我在使用某些代码时遇到了一些问题,当我知道它存在时,它说文件不存在。代码如下:

#! /bin/ksh
echo "Enter a file name"
read fileName
if [ -e $fileName ];then
    less -M $fileName
    gedit $fileName
else
    echo "$fileName is not a file"
fi

我几乎肯定错过了一些令人眼花缭乱的事情......我只是希望我知道它是什么。无论如何,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我在这里看到两个选项:

  1. 变量名称中的拼写错误
  2. 按Enter不带文件名。
  3. 无论哪种方式都可以通过在脚本顶部添加set -u来解决这个问题, 或者通过测试使用参数扩展:${...:?}

    最后,最好先处理异常,然后尝试报告实际发生的情况。 原始脚本中的错误消息与实际测试相差甚远,并不反映测试的作用。在这种情况下,最好让系统告诉错误。

    以下是一个例子

    #! /bin/ksh
    echo "Enter a file name"
    read fileName && [[ -e ${fileName:?} ]] || exit
    
    less -M ${fileName:?} || exit
    gedit ${fileName:?}