如果在Bash中比较两个变量的结果不符合预期,可能是由于变量中包含了空格或其他不可见字符。解决这个问题的方法有以下几种:
var1="Hello World"
var2="Hello World"
if [ "$var1" = "$var2" ]; then
echo "变量相等"
else
echo "变量不相等"
fi
trim
函数去除变量中的空格:定义一个trim
函数,用于去除变量中的空格和其他不可见字符,并将处理后的结果赋值给新的变量。trim() {
local var="$*"
var="${var#"${var%%[![:space:]]*}"}" # 移除前导空白
var="${var%"${var##*[![:space:]]}"}" # 移除尾随空白
echo -n "$var"
}
var1="Hello World"
var2="Hello World"
trimmed_var1=$(trim "$var1")
trimmed_var2=$(trim "$var2")
if [ "$trimmed_var1" = "$trimmed_var2" ]; then
echo "变量相等"
else
echo "变量不相等"
fi
var1="Hello World"
var2="Hello World"
if [[ $var1 =~ ^[[:space:]]*$var2[[:space:]]*$ ]]; then
echo "变量相等"
else
echo "变量不相等"
fi
以上是几种解决Bash中比较两个变量结果不符预期的方法,根据具体情况选择适合的方法来解决问题。
上一篇:Bash - 计算百分比