如果声明数字混乱在bash / sh

时间:2012-12-10 20:08:02

标签: bash shell conditional sh

我整个上午一直在争论这段代码。在读完TL时,它终于明白了; DP我的if语句可能会混淆输出重定向与比较。

有问题的代码是:

#!/bin/sh
...
if [ $DEBUG_LEVEL > 2 ]
then
  echo "I made it here"
  echo "DEBUG: created run_all_somatic_SNV_steps" >>$LOG
fi

我的if语句是否会将stderr重定向与我想要的内容混淆? (将变量与数字2进行比较)

2 个答案:

答案 0 :(得分:2)

对于一般的shell:

if [ $DEBUG_LEVEL -gt 2 ]

(但如果从未设置DEBUG_LEVEL,则会失败。)

更多特定于bash,而且更好:

if (( DEBUG_LEVEL > 2 ))

答案 1 :(得分:1)

试试这个测试结构:

[ $DEBUG_LEVEL -gt 2 ]