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

Jac*_*ble 0 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
Run Code Online (Sandbox Code Playgroud)

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

/hp/qa02/App/IPHSLDI/Data
./iftest.ksh: line 7: [[ls: not found
Run Code Online (Sandbox Code Playgroud)

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

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

Bar*_*mar 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
Run Code Online (Sandbox Code Playgroud)