这是我的脚本(查找包含指定模式的文件):
find . -type f \
-exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \;
我想将我的脚本与参数§一起使用:
MyScript.sh pattern
我的问题是我无法将$1变量放入awk。
当我尝试调试脚本时
bash -x MyScript.sh pattern
这是输出:
+ find . -type f -exec awk -v vawk=pattern '// {c++} c>0 {print ARGV[1] ; exit 0 } END { if (! c) {exit 1}}' '{}' ';'
该$vawk变量似乎为空。
任何的想法?
awk扩展了类似于C的转义序列$1,因此,如果$1可能包含反斜杠字符(对于正则表达式很常见),则该方法将不起作用。您可以改用ENVIRONawk特殊数组。