bash字符串比较失败

时间:2014-04-02 07:07:23

标签: bash

我有一个存储netcat输出的变量

var=$(echo "flush_all" | nc localhost 111)
echo $var # outputs "OK"
if test "$var" != "OK"; then
    echo "failed"
    exit
fi

它输出它传递但是当我想以编程方式检查它是否为真时,它失败了。我的比较有什么问题?

1 个答案:

答案 0 :(得分:7)

似乎变量包含来自命令替换的回车符。你有几个选择。确保字符串以OK开头:

if [[ "$var" == "OK"* ]]; then

或者,在变量赋值期间剥离CR:

var=$(echo "flush_all" | nc localhost 111 | tr -d '\r')

您可以使用od来计算变量包含的内容。在下面的示例中,变量var包含OK\r,在尝试OK变量时显示为echo

$ echo "$var" | od -x
0000000 4b4f 0a0d
0000004
$ echo OK | od -x
0000000 4b4f 000a
0000003