0

所以我是 kornshell 的新手,我的 if 语句无法正常工作。这是我文件中的内容

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

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

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

我究竟做错了什么?

4

1 回答 1

2

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

您可以使用命令test或等效命令[,或内置 ksh [[

if test "$1" = Y

或者

if [ "$1" = Y ]

或者

if [[ $1 == Y ]]

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

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

于 2013-10-01T16:37:10.323 回答