我试图将用户输入与字符串进行比较 这是我的代码
Encode="Encode"
Decode="Decode"
printf "Enter name of file: "
read fileName
printf "Encode Or Decode: "
read EncOrDec
if [ "$Encode"=="$EncOrDec" ]; then
printf "Encode Nice\n"
elif [ "$Decode"=="$EncOrDec" ]; then
printf "Decode Nice\n"
else
printf "Nothing\n"
fi
它总是转到Encode语句,为什么? 以及如何解决它
答案 0 :(得分:3)
在bash中,空格很重要。替换:
if [ "$Encode"=="$EncOrDec" ]; then
使用:
if [ "$Encode" = "$EncOrDec" ]; then
没有空格,bash只是测试字符串"$Encode"=="$EncOrDec"
是否为空。由于从不为空,因此始终执行then
子句。
此外,作为次要细节,当使用[...]
时,=
用于字符串相等是POSIX标准。 Bash接受==
,但==
不是标准的,并且不会可靠移植。
同样适用于elif
行。替换:
elif [ "$Decode"=="$EncOrDec" ]; then
使用:
elif [ "$Decode" = "$EncOrDec" ]; then