为什么相同的 bash 脚本在不同的笔记本电脑上表现不同?

为什么相同的 bash 脚本在不同的笔记本电脑上表现不同?

我正在运行一个 bash 脚本,它在不同的笔记本电脑上表现不同。我使用的是 HP G7 和 Acer Swift 3,两者都安装了全新安装的 Ubuntu 19.10,在 HP 上运行良好,但在 Acer 上运行不正常。这是脚本:

output=REAL.in

for j in $(seq 1 1 1000)
do
a=$(echo "0.010000 * $j" | bc)

  xx=$(cat epsxx.dat | grep -m1 "$a" |awk -F '[[:space:]][[:space:]]+' '{print $3}')  
  yy=$(cat epsyy.dat | grep -m1 "$a" |awk -F '[[:space:]][[:space:]]+' '{print $3}')  
  zz=$(cat epszz.dat | grep -m1 "$a" |awk -F '[[:space:]][[:space:]]+' '{print $3}')  
  xy=$(cat epsxy.dat | grep -m1 "$a" |awk -F '[[:space:]][[:space:]]+' '{print $3}')  
  yz=$(cat epsyz.dat | grep -m1 "$a" |awk -F '[[:space:]][[:space:]]+' '{print $3}')  
  zx=$(cat epszx.dat | grep -m1 "$a" |awk -F '[[:space:]][[:space:]]+' '{print $3}')  
  echo "  $a   $xx   $yy   $zz   $xy   $yz   $zx" |tee -a $output

done

它打开的文件如下所示:

  # energy grid [eV]     epsr     epsi
       0.010000       3.500795      15.109691  
       0.020000       3.511381       7.527619  
       0.030000       3.705182       5.390616  
       0.040000       3.660826       4.569134  
       0.050000       3.476175       4.169090  
       0.060000       3.229346       3.926634

等等。在 HP 上,它完全按照预期执行,获取不同文件的第二列并按行将它们放入输出文件中。在 Acer 上,我只得到第一列,即计数器。

它曾经在 Acer 19.04 上运行,但是当我将其重新安装到 19.04 时它停止工作。

知道原因吗?

答案1

请检查您正在使用什么 AWK。

它可以是 gawk 或 mawk,这些实用程序的工作方式略有不同。

答案2

我猜想系统中缺少 awk,使用 apt-get 安装 gawk 解决了这个问题。

相关内容