技术解析

shell 脚本一个神奇的字符比较问题
0
2021-07-05 05:56:28
idczone
# 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 部分


[[ "$status" = "A" ]]

你应该用 sh -x ./compare.sh 执行,看看 status 具体是什么,可能是“ A\n ”,换行了呢,或者有其他不可见符号

确定输出只有一个字符吗

谢谢

谢谢

status=$'A\r' 多了个回车符

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服