Shell linux/awk中如何用数组元素乘以列

Shell linux/awk中如何用数组元素乘以列,shell,awk,Shell,Awk,我有一个数组,想用数组元素乘以文件的一列。但是与数组元素的乘法不起作用 Input.file chr1 100 150 3.5 chr1 200 450 10.5 chr1 300 950 9.5 ..... 预期产量 2 21 19 .... 代码: 我的壳 echo $SHELL /bin/bash 此乘法返回所有0值。我的代码有什么问题 好的,谢谢你的更新。您还没有说明哪个特定的shell,但问题是单引号中的所有内容都是特定于aw

我有一个数组,想用数组元素乘以文件的一列。但是与数组元素的乘法不起作用

Input.file

chr1    100    150    3.5
chr1    200    450    10.5
chr1    300    950    9.5
.....
预期产量

2
21
19
....
代码:

我的壳

echo $SHELL
/bin/bash

此乘法返回所有0值。我的代码有什么问题

好的,谢谢你的更新。您还没有说明哪个特定的shell,但问题是单引号中的所有内容都是特定于awk的,因此其中的
数组[0]
是一个awk变量(关联数组),而不是同名的shell变量。尝试获取单引号之外的数组引用;你所需要做的就是把双引号改成单引号,我想:

awk '{print $4*'${array[0]}'}' Input.file
要查找shell,可以使用
ps
命令并查找名称以
sh
结尾的进程:

$ ps
      PID    PPID    PGID     WINPID   TTY     UID    STIME COMMAND
     2396       1    2396       2396  ?       197612   Oct 16 /usr/bin/mintty
     3480    2396    3480       3424  pty0    197612   Oct 16 /usr/bin/bash
     2500    3480    2500        224  pty0    197612 09:53:03 /usr/bin/ps

常见的shell名称有:
ksh
sh
csh
bash
。我的是
bash

如果只使用数组的一个元素,可以将其作为变量传递给awk脚本

 awk -v s="${array[0]}" '{print s*$4}' input.file

显然,您的“数组”不是在awk中设置的,而是在某个shell中设置的。请用您正在使用的shell的标记更新问题,并显示您用于设置“数组”的确切代码。谢谢@Jeff Y。我已经添加了标记和shell。这就是你要问的吗?非常感谢@Jeff Y。用单引号代替双引号,效果非常好。然而,我并没有得到你所期待的“你还没有说具体的外壳”?您可以使用eleborate或指定命令来指定哪个shell吗?
 awk -v s="${array[0]}" '{print s*$4}' input.file