Kornshell如果声明不起作用

时间:2013-10-01 16:34:11

标签: bash if-statement ksh string-comparison

所以我是kornshell的新手,我不能让我的if语句工作。这就是我在文件中的内容

if $1 = "Y"
then
    echo "I am here";
fi

当我执行文件时,这是我得到的错误:

test.ksh[1]: Y: not found [No such file or directory]

我做错了什么?

1 个答案:

答案 0 :(得分:2)

if后面必须跟一个命令;它测试命令是否成功终止。

您可以使用命令test或等效命令[或ksh builtin [[

if test "$1" = Y

if [ "$1" = Y ]

if [[ $1 == Y ]]

如果参数指示的条件为真,则上述命令成功。 man test应该为您提供有效条件列表。请记住引用test[命令的变量替换;如果没有,未定义的变量将被替换为什么(即它们将被删除),这通常是一个错误报告。

如果您不需要严格的Posix兼容性,请使用ksh内置的[[bash中也提供了[[。它更方便,因为它不会对其参数进行分词,因此不需要引用变量扩展。请注意,使用==时,比较{{1}}的右侧是一个模式(“glob”),除非它被引用,因此如果需要,您可能需要右侧的引号文字平等检查。