0

我有以下 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 目录中是否有多个校验和文件。如果有我想退出脚本。

4

1 回答 1

6

有几个问题:

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

  2. 您需要在语句周围[[和语句中使用空格。]]if

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

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

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

所以完整的脚本应该是:

#!/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
于 2012-11-14T20:17:44.190 回答