0

我对某些代码有一些问题,当我知道文件不存在时,它说文件不存在。代码如下:

#! /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

我几乎肯定错过了一些非常明显的东西……我只是希望我知道它是什么。无论如何,任何帮助将不胜感激。

4

1 回答 1

0

我在这里看到两个选项:

  1. 变量名中的错字
  2. 在没有文件名的情况下按 Enter。

无论哪种方式,这都可以通过添加set -u到脚本的顶部来解决,或者通过使用带有测试的参数扩展来解决:${...:?}

最后,最好先处理异常,并尝试报告实际发生的情况。原始脚本中的错误消息与实际测试相去甚远,并且不反映测试做了什么。在这种情况下,最好让系统告诉你哪里出了问题。

下面是一个例子

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

less -M ${fileName:?} || exit
gedit ${fileName:?}
于 2013-10-08T08:53:14.643 回答