函数调用bash脚本

时间:2015-08-07 11:32:06

标签: bash shell

我有一个名为 test1 的文件,其中包含值,我想阅读。使用值的数量,我想增加计数器计数,然后获得计数值 -

 cot()
      {
       count=0
       cat test1 | while read line                                    
       do
         ((count++))
       done
       return $count
      }
  a=$(cot)
  printf "$a"

1 个答案:

答案 0 :(得分:1)

你很接近,但是你对bash中一个函数使用return感到困惑。返回值是整数,而不是字符串。要完成您要执行的操作,只需在功能结束时printfecho $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