# cat compare.sh
#!/bin/bash
status=$(/tmp/vpn/vpn1.exp | grep '10.31.90.101'|awk '{print $NF}'|uniq)
echo "$status"
if [[ "$status" == "A" ]];then
echo 'A'
else
echo 'not A'
fi
# /tmp/vpn/vpn1.exp | grep '10.31.90.101'|awk '{print $NF}'|uniq
A
# ./compare.sh
A
not A
为什么 /tmp/vpn/vpn1.exp | grep '10.31.90.101'|awk '{print $NF}'|uniq 输出是个 A , 但在 if [[ "$status" == "A" ]]比较确失败了?代码直接执行了 else 部分
1
curiouslfq 2016-04-05 22:14:47 +08:00 1
[[ "$status" = "A" ]]
|
2
BOYPT 2016-04-05 22:16:28 +08:00 1
你应该用 sh -x ./compare.sh 执行,看看 status 具体是什么,可能是“ A\n ”,换行了呢,或者有其他不可见符号
|
3
curiouslfq 2016-04-05 22:17:06 +08:00
确定输出只有一个字符吗
|
5
imkh OP @curiouslfq 谢谢
|
6
imkh OP status=$'A\r' 多了个回车符
|