Bash

為什麼 Awk 弄亂了我的腳本變數

  • December 16, 2018

我真的不知道為什麼我的變數會變得混亂,但我懷疑原因是 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
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休息時間。

引用自:https://unix.stackexchange.com/questions/466030