是否将结果从find传递给自定义bash函数?
我有一个自定义的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
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")"