echo 不在 bash 中打印变量
echo does not print a variable in bash
我遇到了一个非常奇怪的问题。我有 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 可以完成这项工作,但这不是问题所在。
这其实不是问题,或者是我的问题。我提到的两个文件都是从 telnet 会话创建的(使用 expect 命令更具体)。所以所有行都以 \r 结尾,当然 echo 1st val 14\r 2em val 24\r
将 'overwrite' 回显的第一部分。所以我把\r换成\n就ok了
为了理解这个问题,我将命令复制到脚本中并使用 set -x
。很容易找到 \r.
抱歉这个愚蠢的问题。
我遇到了一个非常奇怪的问题。我有 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 可以完成这项工作,但这不是问题所在。
这其实不是问题,或者是我的问题。我提到的两个文件都是从 telnet 会话创建的(使用 expect 命令更具体)。所以所有行都以 \r 结尾,当然 echo 1st val 14\r 2em val 24\r
将 'overwrite' 回显的第一部分。所以我把\r换成\n就ok了
为了理解这个问题,我将命令复制到脚本中并使用 set -x
。很容易找到 \r.
抱歉这个愚蠢的问题。