函数的bash调用中的引号问题

时间:2016-06-24 19:49:14

标签: bash xargs

我写了一个小的bash脚本,看起来像这样:

VAR1="test"
VAR2="test2"

letsDoSomeStuff() {
echo $1
echo $2
echo $3`
}



fswatch -0 . | xargs -0 -n 1 -I {} bash -c 'letsDoSomeStuff {} "$VAR1 $VAR2"'

我想要做的是在文件夹中查找更改(通过swatch),然后在bash脚本的函数中使用更改的文件执行一些操作。不幸的是,我需要传递$ VAR1和$ VAR2作为参数,因为它们不会生存下来#34; xargs调用。

bash脚本运行正常。但是,$ VAR1和$ VAR2未正确传递给该函数。当我启动脚本时,它会为每个更改的文件输出:

   filename
empty line
empty line

有人可以帮我解决这个问题吗?我想我搞乱了单引号和双引号,但无法找到正确的方法。

提前致谢

诺贝特

1 个答案:

答案 0 :(得分:2)

您需要将参数传递给函数调用:

fswatch -0 . | 
xargs -0 -n 1 -I {} bash -c 'letsDoSomeStuff "$1" "$2" "$3"' - {} "$VAR1" "$VAR2"