我对done < $1
的符号有点困惑。
我正在尝试编写一个名为“sumnums”的程序,它读取名为“nums”的文件,其中包含一些数字行。然后,它应该打印数字行,接着是所有数字的总和。
目前我的代码如下:
#!/bin/bash
sum=0;
while read myline
do
echo "Before for; Current line: \"$myline\""
done
for i in $myline; do
sum=$(expr $sum + $i)
done < $1
echo "Total sum is: $sum"
程序在正确输出nums列表后,输出./sumnums: line 10: $1: ambiguous redirect
,然后输出Total sum is: 0
。看起来它没有进行加法计算。请问如何重新排列这些代码行以修复程序并消除"ambiguous redirect"的错误?
./sumnum nums
来调用,或者将done < $1
改为done < nums
。 - codeforestercat nums | ./sumnums
- themightyscot./sumnums nums
,并将nums
传递给$1
,那么$1
中就没有文件名,因此<"$1"
根本没有意义。 - Charles Duffy