Bash shell中未读取文本文件的第一行

Bash shell中未读取文本文件的第一行,bash,shell,unix,Bash,Shell,Unix,好吧,我编译这段代码是为了读取一个文本文件,但是它成功地找到了除第一行之外所需的每一列的总和!因此给出了错误的求和,它排除了它读入的第一行上的值。它设置值:$line=ddsdfj:jdskf:1:fjf,但从不从第一行提取1。任何线索都将不胜感激 FILE=$1 while read line do awk -F: '{summation += $3;}END{print summation;}' done < $FILE while循环是完全多余的。看起来你想要的是 awk -F:

好吧,我编译这段代码是为了读取一个文本文件,但是它成功地找到了除第一行之外所需的每一列的总和!因此给出了错误的求和,它排除了它读入的第一行上的值。它设置值:$line=ddsdfj:jdskf:1:fjf,但从不从第一行提取1。任何线索都将不胜感激

FILE=$1
while read line
do
 awk -F: '{summation += $3;}END{print summation;}'
done < $FILE
while循环是完全多余的。看起来你想要的是

awk -F: '{s+=$3}END{print s}' "$1"
很简单

您的代码将使用read读取第一行,然后将其他行作为awk的标准输入;因此,你观察到的行为。差不多

while read line; do
    awk -F: '{s+=$3}END{print s}' <<<"$line"
done <"$1"

实际上会将第行中的值用于某些内容,但当然,这只会从每行中单独提取第三个字段,而不会对不同行中的值进行任何实际相加。

这是如何工作的?您还没有将任何内容传递给awk阅读??我将通过bash->./filename.sh some.txt调用它