我注意到一个 O'Reillyawk
示例(1997),它通过在程序文本之后的命令行上设置它来分配一个 awk 变量。它确实有效,但我在man / info awk 中找不到这种语法。我刚刚错过了吗?它被贬低了吗……?我在手册中看到的唯一语法是-v
选项。
awk '/home/{print foo, bar}' foo="cat" bar="dog" /proc/$$/cmdline
Run Code Online (Sandbox Code Playgroud)
输出: cat dog
这是我的脚本(查找包含指定模式的文件):
find . -type f \
-exec awk -v vawk="$1" '/'"$vawk"'/ {c++} c>0 { print ARGV[1]; exit 0 } END { if (! c) {exit 1}}' \{\} \;
Run Code Online (Sandbox Code Playgroud)
我想将我的脚本与参数 § 一起使用:
MyScript.sh pattern
Run Code Online (Sandbox Code Playgroud)
我的问题是我无法将$1
变量放入awk
.
当我尝试调试我的脚本时
bash -x MyScript.sh pattern
Run Code Online (Sandbox Code Playgroud)
这是输出:
+ find . -type f -exec awk -v vawk=pattern '// {c++} c>0 {print ARGV[1] ; exit 0 } END { if (! c) {exit 1}}' '{}' ';'
Run Code Online (Sandbox Code Playgroud)
该$vawk
变量似乎是空的。
任何的想法?