bash脚本从文件中读取数字

时间:2015-03-02 06:54:59

标签: linux bash while-loop

你好我需要制作一个bash脚本,它将从文件中读取,然后在文件中添加数字。例如,文件即时读取将显示为:

cat samplefile.txt

 1
 2
 3
 4

脚本将使用文件名作为参数,然后添加这些数字并打印出总和。我坚持如何从文件中读取整数然后将它们存储在变量中。 到目前为止,我所拥有的是以下内容:

#! /bin/bash

file="$1"   #first arg is used for file
sum=0       #declaring sum
readnums    #declaring var to store read ints

if [! -e $file] ; do     #checking if files exists
    echo "$file does not exist"
    exit 0
fi

while read line ; do

do < $file

exit 

1 个答案:

答案 0 :(得分:1)

问题是什么?您的代码看起来很好,除了readnums不是有效的命令名,并且if条件中的方括号内需要空格。 (哦,"$file"应该在双引号内。)

#!/bin/bash

file=$1
sum=0

if ! [ -e "$file" ] ; do     # spaces inside square brackets
    echo "$0: $file does not exist" >&2  # error message includes $0 and goes to stderr
    exit 1                   # exit code is non-zero for error
fi

while read line ; do
    sum=$((sum + "$line"))
do < "$file"


printf 'Sum is %d\n' "$sum"
# exit                       # not useful; script will exit anyway

然而,shell传统上不是一个非常好的算术工具。也许尝试像

这样的东西
awk '{ sum += $1 } END { print "Sum is", sum }' "$file"

也许在一个shell脚本片段中检查文件是否存在等等(尽管在这种情况下你会从Awk那里得到一个相当有用的错误信息)。