为什么 awk 搞乱了我的脚本变量

为什么 awk 搞乱了我的脚本变量

我真的不知道为什么我的变量变得混乱,但我怀疑原因是 awk。我已将这个问题浓缩为一个小脚本:

#!/usr/bin/env bash

QUE_FILE="/mnt/drive4-4/private/queue2.txt"
t1="$(cat "$QUE_FILE")"
echo "$t1"
echo "============"
echo "$t1" | while read i; do
    a1="$(echo "$i" | awk '{print $1}')"
    a2="$(echo "$i" | awk '{print $2}')"
    echo "a1 $a1 - a2 $a2"
    combined="$a1 $a2 11111111111"
    echo "combined $combined"
done

和输出:

AA BB CC
DD EE
============
a1 AA - a2 BB
combined AA BB 11111111111
a1 DD - a2 EE
 11111111111EE

最后一行应该是:

combined DD EE 11111111111

答案1

while read A1 A2 REST; do echo -e "a1 $A1 - a2 $A2 \ncombined $A1 $A2 111111" ; done < /mnt/drive4-4/private/queue2.txt

不同之处在于awk打印行字段的最后一个带有“行尾”,而read AA BB CC保存特定字段时不带“行尾”。保存REST第三个(如果有)和所有接下来的字段。在换行的间隙echo -e\n

相关内容