所以我是kornshell的新手,我不能让我的if语句工作。这就是我在文件中的内容
if $1 = "Y"
then
echo "I am here";
fi
当我执行文件时,这是我得到的错误:
test.ksh[1]: Y: not found [No such file or directory]
我做错了什么?
答案 0 :(得分:2)
if
后面必须跟一个命令;它测试命令是否成功终止。
您可以使用命令test
或等效命令[
或ksh builtin [[
:
if test "$1" = Y
或
if [ "$1" = Y ]
或
if [[ $1 == Y ]]
如果参数指示的条件为真,则上述命令成功。 man test
应该为您提供有效条件列表。请记住引用test
和[
命令的变量替换;如果没有,未定义的变量将被替换为什么(即它们将被删除),这通常是一个错误报告。
如果您不需要严格的Posix兼容性,请使用ksh
内置的[[
,bash
中也提供了[[
。它更方便,因为它不会对其参数进行分词,因此不需要引用变量扩展。请注意,使用==
时,比较{{1}}的右侧是一个模式(“glob”),除非它被引用,因此如果需要,您可能需要右侧的引号文字平等检查。