我对某些代码有一些问题,当我知道文件不存在时,它说文件不存在。代码如下:
#! /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
我几乎肯定错过了一些非常明显的东西……我只是希望我知道它是什么。无论如何,任何帮助将不胜感激。
我在这里看到两个选项:
无论哪种方式,这都可以通过添加set -u到脚本的顶部来解决,或者通过使用带有测试的参数扩展来解决:${...:?}
最后,最好先处理异常,并尝试报告实际发生的情况。原始脚本中的错误消息与实际测试相去甚远,并且不反映测试做了什么。在这种情况下,最好让系统告诉你哪里出了问题。
下面是一个例子
#! /bin/ksh
echo "Enter a file name"
read fileName && [[ -e ${fileName:?} ]] || exit
less -M ${fileName:?} || exit
gedit ${fileName:?}