运行脚本时不断出现此错误,不确定出现了什么问题,这是elif with或condition statement
第xx行:((:WEST - 非常大= EAST - BIG:表达式中的语法错误(错误标记为“WEST - Very Big”)
echo "$yn"
if (($yn=EAST - BIG)) || (($yn=EAST - SMALL))
then
echo "---------------------------------------------------------------------------" >> /tmp/"$HOSTNAME".log
elif (($yn=WEST - Very Big)) || (($yn=WEST - Very Small))
then
echo "---------------------------------------------------------------------------" >> /tmp/"$HOSTNAME".log
else
echo "---------------------------------------------------------------------------" >> /tmp/"$HOSTNAME".log
fi
答案 0 :(得分:2)
几个问题。 (( ))
内的相等性检查是==
(单个=
是一项任务)。这在许多语言中都很常见。
变量名中不允许有空格(假设它们是变量名)。变量名中允许的字符是ASCII字母数字或下划线,第一个字符不能是数字。
将所有大写字母用于您自己的变量名称也是一个坏主意。 shell自己设置并使用大量的UPPERCASE变量,你可以踩踏彼此的值。
以下是我的代码测试版:
yn=42
EAST=52
BIG=100
WEST=45
Very_Big=3
Very_Small=1
HOSTNAME='fred'
# Here I used a variable to avoid repeating myself
# that makes it easier to change the filename later
outfile="/tmp/$HOSTNAME.log"
> "$outfile" # Zero the file
echo "$yn"
if (($yn == EAST - BIG )) || (($yn == EAST - SMALL ))
then
echo "---------------------------------------------------------------------------" >> "$outfile"
elif (($yn == WEST - Very_Big )) || (($yn == WEST - Very_Small))
then
echo "---------------------------------------------------------------------------" >> "$outfile"
else
echo "---------------------------------------------------------------------------" >> "$outfile"
fi
使用一致缩进时,代码更容易阅读。要跟踪bash程序的运行方式,请使用-x
,例如:
bash -x myscript