首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在find -exec中使用.bashrc中定义的bash函数

如何在find -exec中使用.bashrc中定义的bash函数
EN

Stack Overflow用户
提问于 2010-06-17 04:06:35
回答 7查看 6.6K关注 0票数 17

我的.bashrc有以下功能

function myfile {
 file $1
}
export -f myfile

当我直接调用它时,它工作正常

rajesh@rajesh-desktop:~$ myfile out.ogv 
out.ogv: Ogg data, Skeleton v3.0

当我尝试通过exec调用它时,它不工作。

rajesh@rajesh-desktop:~$ find ./ -name *.ogv -exec myfile {} \;
find: `myfile': No such file or directory

有没有办法用exec调用bash脚本函数?

任何帮助都是非常感谢的。

更新:

谢谢你的回复,吉姆。

但这正是我首先想要避免的,因为我在我的bash脚本中定义了很多实用函数,我想将它们与其他有用的命令一起使用,比如find -exec。

我完全明白你的观点,find可以运行可执行文件,它不知道传递的参数是脚本中定义的函数。

当我尝试在bash提示符下执行时,我将得到相同的错误。

$ exec myfile out.ogv

我希望可能会有一些巧妙的技巧,可以给exec一些假设的命令,比如"bash -myscriptname -myfunctionname“。

我想我应该尝试找到一些方法来动态创建bash脚本,并使用exec运行它。

EN

回答 7

Stack Overflow用户

发布于 2011-04-14 17:20:23

find ./ -name *.ogv -exec bash -c 'myfile {}' \;
票数 7
EN

Stack Overflow用户

发布于 2012-04-14 15:59:47

我设法让它运行得更优雅一些,比如:

function myfile { ... }
export -f myfile
find -name out.ogv -exec bash -c '"$@"' myfile myfile '{}' \;

请注意,myfile被提供了两次。第一个参数是脚本的$0参数(在本例中,基本上可以是任何参数)。第二个参数是要运行的函数的名称。

票数 7
EN

Stack Overflow用户

发布于 2010-06-17 07:13:11

$ cat functions.bash
#!/bin/bash

function myecho { echo "$@"; }
function myfile { file "$@"; }
function mycat { cat "$@"; }

myname=`basename $0`
eval ${myname} "$@"
$ ln functions.bash mycat
$ ./mycat /etc/motd
Linux tallguy 2.6.32-22-core2 ...
$ ln functions.bash myfile
$ myfile myfile
myfile: Bourne-Again shell script text executable
$ ln functions.bash myecho
$ myecho does this do what you want\?
does this do what you want?
$ 

当然,函数可能比我的示例稍微复杂一些。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3056788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档