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