Shell - 表达式中的语法错误(错误标记为“0”)

时间:2013-12-12 20:05:25

标签: bash shell testing

此代码有什么问题?

if  (( `date +%U` % 2 -eq 0 ))
then
   VOLUME= "A"
else
    VOLUME="B"
fi

我得到“表达式中的语法错误(错误标记为”0“)”eror。

3 个答案:

答案 0 :(得分:3)

您需要使用$(...)语法来使用命令替换。

您可以使用此命令:

(( $(date +%U) % 2 == 0 )) && VOLUME="A" || VOLUME="B"

答案 1 :(得分:1)

您的问题是在算术测试(双括号)的上下文中使用-eq运算符。

您需要Command Substitution $(…)

if (( $(date +%U) % 2 == 0 )); then VOLUME= "A" else VOLUME="B"; fi

N.B。:Why is $(…) preferred over `…` (backticks)?

答案 2 :(得分:0)

试试这个。

case $(date +%U) in
    *[02468] ) VOLUME="A";;
    *) VOLUME="B";;
esac

另请注意,=周围的空格不允许。