我有几个变量,我想检查以下条件(用文字写出来,然后我尝试 bash 脚本失败):
if varA EQUALS 1 AND ( varB EQUALS "t1" OR varB EQUALS "t2" ) then do something done.
在我失败的尝试中,我想出了:
if (($varA == 1)) && ( (($varB == "t1")) || (($varC == "t2")) ); then scale=0.05 fi
这是在 bash 中编写测试的惯用方式:
if [[ $varA == 1 && ($varB == "t1" || $varC == "t2") ]]; then
如果您需要移植到其他 shell,这将是一种方式(注意每个单独的测试周围的附加引号和单独的括号集,以及使用传统=运算符而不是 ksh/bash/zsh==变体):
=
==
if [ "$varA" = 1 ] && { [ "$varB" = "t1" ] || [ "$varC" = "t2" ]; }; then