Exec未将结果输出到函数



如何获得函数使用的查找结果?我总是得到空白的结果。

#!/bin/bash
#functions
function codec_scan () {
echo "paremter 1 is this: $1" # >> $fulllog
}
#exporting
export -f codec_scan
#Main Code
find . -type f ( -name "*.avi" -o -name "*.AVI" -o -name "*.m4v" -o -name "*.mkv" -o -name "*.mp4" -o -name "*.MP4" ) -exec bash -c codec_scan "{}" ;

"{}"文字字符",内部有{}。这是唯一的{}。前面没有,后面没有。除非您想添加文字"字符。

bash -c 'script...'。后面的参数是脚本的参数,而不是函数的参数。每个函数都有自己的$1 $2 ...位置参数,它们与脚本是分开的。他们对bash -c的争论从$0开始,而不是从$1开始,参见man bash,这就像bash -c 'script..' <$0> <$1> <$2> ...

您想要:

find ....  -exec bash -c 'codec_scan "$@"' _ {} ;

不要在bash中使用function。只有codec_scan() {。看见https://wiki.bash-hackers.org/scripting/obsolete

您可能对-iname感兴趣。

相关内容

  • 没有找到相关文章

最新更新