我看到了关于同一问题的问题,但这些问题都是关于字符串的。整数呢?为什么我会收到"预期的一元运算符"错误?
if [ $(date +%k%M) -ge ${!BLOCK1FRAN} ] ; then whatever ; fi
您正在使用间接寻址。如果变量${BLOCK1FRAN}
指向空变量,您将收到错误消息。确保 ${BLOCK1FRAN}
指向的变量包含有效的数值。
如果要将空字符串和非数字值计算为零 (0
),请使用以下语法。
if [[ $(date +%k%M) -ge ${!BLOCK1FRAN} ]]; then whatever ; fi
对我来说看起来不错。您确定已正确设置BLOCK1FRAN吗?
whatever() { echo "it works"; }
foo=42
BLOCK1FRAN=foo
if [ $(date +%k%M) -ge ${!BLOCK1FRAN} ] ; then whatever ; fi
it works