echo不会在bash中打印变量

时间:2018-04-20 11:20:35

标签: linux bash echo

我面临一个非常奇怪的问题。我有2个文件ber_log_before.txt和ber_log_after.txt。他们的内容是

ber_log_before.txt

$
BOAR 0 BER:14
BOAR 1 BER:19
BOAR 2 BER:0
BOAR 3 BER:0
BOAR 4 BER:0
BOAR 5 BER:0
BOAR 6 BER:0
BOAR 7 BER:0

$

ber_log_after.txt

$
BOAR 0 BER:24
BOAR 1 BER:29
BOAR 2 BER:0
BOAR 3 BER:0
BOAR 4 BER:0
BOAR 5 BER:0
BOAR 6 BER:0
BOAR 7 BER:0

$

$它是正常的。

然后我写了一个基本的bash命令来解析它们

PORT="0 1"
for port in $PORT; do
    VAL1=$(grep "BOAR $port" ber_log_before.txt | cut -f2 -d':')
    VAL2=$(grep "BOAR $port" ber_log_after.txt  | cut -f2 -d':')
    echo 1st val ${VAL1} 2em val ${VAL2}
done

为什么1st val 14 2em val 24没有回显???

如果我更换

echo 1st val ${VAL1} 2em val ${VAL2}

通过

echo 1st val ${VAL1}
echo 2em val ${VAL2}

然后至少我有2em val回应。

我想awk可以胜任这项工作,但这不是问题。

1 个答案:

答案 0 :(得分:0)

这实际上不是问题,或者是我的问题。我提到的两个文件都是从telnet会话创建的(expect命令更具体)。因此,所有行都以\ r结尾,当然echo 1st val 14\r 2em val 24\r将覆盖'回声的第一部分。所以我将\ r替换为\ n,然后就可以了。

要理解这个问题,我将命令复制到脚本中并使用set -x。很容易找到\ r。

抱歉这个愚蠢的问题。