我有一个名为 test1 的文件,其中包含值,我想阅读。使用值的数量,我想增加计数器计数,然后获得计数值 -
cot()
{
count=0
cat test1 | while read line
do
((count++))
done
return $count
}
a=$(cot)
printf "$a"
答案 0 :(得分:1)
你很接近,但是你对bash中一个函数使用return
感到困惑。返回值是整数,而不是字符串。要完成您要执行的操作,只需在功能结束时printf
或echo
$count
:
#!/bin/bash
cot() {
local count=0
local fname="${1:-test1}"
while read -r line
do
((count++))
done <"$fname"
printf $count
}
a=$(cot)
printf "lines read from test1: %s\n" $a
您还可以在函数中使用变量名之前的local
关键字来消除歧义和名称冲突的可能性,并确保在函数返回时取消设置变量。在上面的函数中,你可以传递任何文件名来读取函数并返回行数(默认情况下,如果没有给出文件名是test1
)
<强>实施例强>
$ wc -l <test1 ## confirm test1 is a 94 line file
94
$ bash count_cot.sh ## calling above function
lines read from test1: 94
要读取作为脚本第一个参数传递的任何文件的行数,只需将$1
传递给cot
:
a=$(cot "$1")
name=${1:-test1} ## intentionally placed after call for illustration
printf "lines read from file '%s': %s\n" "$name" $a
示例强>
$ wc -l <wcount2.sh
62
$ bash count_cot.sh wcount2.sh
lines read from 'wcount2.sh': 62