如果在bash脚本中不起作用

时间:2015-03-07 15:50:11

标签: bash

这不是完整的代码,2个第一行仅用于" debug"目的,我是关于bash脚本的新手,我不知道为什么ls $ACTUAL/${BACKUP_DIR}/${NOMBRE}_*.tgz | wc -l返回2,脚本执行then子句......

COPIAS=$(ls $ACTUAL/${BACKUP_DIR}/${NOMBRE}_*.tgz | wc -l)
echo ${COPIAS}
if [ $(ls $ACTUAL/${BACKUP_DIR}/${NOMBRE}_*.tgz | wc -l)>5 ]
    then
        echo "more than 5"
    else
        echo "5 or less"
fi 

2 个答案:

答案 0 :(得分:2)

[是一个普通命令,因此>被视为重定向。您可以使用[[(这是一个关键字)。或者,您可以将>转移到\>,这样就不会将其视为重定向。

请注意>用于字符串比较。要比较两个数字,请使用-gt

答案 1 :(得分:1)

 array=("$ACTUAL/${BACKUP_DIR}/${NOMBRE}_"*.tgz)

 if [[ ${#array[@]} -gt 5 ]]  # -gt: arithmetic operator greater-than
 then
   echo "more than 5"
 else
   echo "5 or less"
 fi