Bash:基于regex参数迭代文件

时间:2013-04-12 14:44:36

标签: bash loops

有几篇关于迭代bash文件的帖子如下:

count_files() {
    count=0

    for f in "filename_*.txt"
    do
        count=$(($count + 1))
    done
    echo "Current count:$count"
}

调用bash脚本时,我需要传入“filename _ * .txt”作为参数。像这样:

$: count_files.sh "filename_*.txt"

$: count_files.sh "different_filename_*.txt"

然而,这仅获取第一个文件:

count_files() {
    count=0

    for f in $1
    do
        count=$(($count + 1))
    done
    echo "Current count:$count"
}

如何传递正则表达式参数并迭代它?

注意:计算文件只是一个例子。如果您有一个简单的方法,请分享,但这不是主要问题。

1 个答案:

答案 0 :(得分:1)

count_files.sh内部脚本中,请确保使用以下引号调用函数:

count_files "$1"

而不是:

count_files $1

稍后会得到count = 1,因为在函数调用第一个文件名之前会扩展通配符。