是否将结果从find传递给自定义bash函数?

是否将结果从find传递给自定义bash函数?,bash,function,shell,loops,find,Bash,Function,Shell,Loops,Find,我有一个自定义的bash测试函数 main () { list=$1 for i in ${list}; do echo $i done } 我试着称之为: main `find . -name hello` 但它只是回显列表中传递的第一个文件。find的原始输出-名称hello是 ./world1/hello ./world2/hello ./world3/hello ./world4/hello ./world5/hello ./world6/h

我有一个自定义的bash测试函数

main () {
    list=$1
    for i in ${list}; do
        echo $i
    done
}
我试着称之为:

main `find . -name hello` 
但它只是回显列表中传递的第一个文件。
find的原始输出-名称hello

./world1/hello
./world2/hello
./world3/hello
./world4/hello
./world5/hello
./world6/hello
./world7/hello
./world8/hello
我怎样才能确保整个名单都通过了

谢谢

使用适当的语法循环文件,如果您希望对
find
output中的每个文件执行特定操作,则不需要函数,只需执行即可

#!/bin/bash

while IFS= read -r file
do
    echo "$file"
    # Your other actions on "$file" go here
done < <(find . -type f -name "hello")
我只是不建议这样使用函数,但是你可以做一些事情,比如

function findRead() {   
    while IFS= read -r file
    do
        echo "$file"
        # Your other actions on "$file" go here
     done <<<"$1"    
}

findRead "$(find . -type f -name "hello")"

这里的关键是对返回
find
输出的
$(..)
命令替换进行双引号引用,以保留新行字符,然后将这些字符馈送到自定义函数。

是否有使用该函数的特定原因?我看不出有什么用。在你的情况下,快速而肮脏的修复方法是将函数中的$1替换为$@谢谢!我不确定我是否做对了,但我尝试了:main(){while IFS=read-r file do echo“$file”#您在“$file”上的其他操作转到此处完成<@lenzinho:你为什么要再次使用该函数?那样使用它毫无意义。请像我一样使用确切的语法。我希望使用一个函数,因为我计划在将来多次调用该函数,并希望根据情况灵活调用不同的选项
function findRead() {   
    while IFS= read -r file
    do
        echo "$file"
        # Your other actions on "$file" go here
     done <<<"$1"    
}

findRead "$(find . -type f -name "hello")"
function findRead() {    
    for file in "$1"
    do
        echo "$file"
    done
}

findRead "$(find . -type f -name "hello")"