为什么我的脚本报告ls:not found

时间:2012-11-14 20:13:53

标签: ksh

我有以下korn脚本:

#!/bin/ksh

TAPPDATADIR=/hp/qa02/App/IPHSLDI/Data

echo $TAPPDATADIR

if [[ls $TAPPDATADIR/zip_file_MD5_checksum*.txt | wc -l > 1]]
then
    exit "asdf"
fi

当我尝试运行它时,我得到:

/hp/qa02/App/IPHSLDI/Data
./iftest.ksh: line 7: [[ls: not found

为什么我的if语句不起作用?

我正在尝试查看Data目录中是否有多个校验和文件。如果有,我想退出脚本。

1 个答案:

答案 0 :(得分:6)

有几个问题:

  1. 作业中=周围不应有任何空格。

  2. [[声明中]]if周围需要空格。

  3. 要将命令的结果替换为测试表达式,您需要使用反引号或$(...)

  4. exit的参数应该是一个数字,我想你只想回应字符串。

  5. >执行字符串比较,您必须使用-gt执行数字比较。

  6. 所以完整的脚本应该是:

    #!/bin/ksh
    
    TAPPDATADIR=/hp/qa02/App/IPHSLDI/Data
    
    echo $TAPPDATADIR
    
    if [[ $(ls $TAPPDATADIR/zip_file_MD5_checksum*.txt | wc -l) -gt 1 ]]
    then
        echo "asdf"
    fi