这是我的脚本(查找包含指定模式的文件):
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
可能包含反斜杠字符(对于正则表达式很常见),则该方法将不起作用。您可以改用ENVIRON
awk特殊数组。