就是希望在执行脚本时传递一个 $1 作为脚本中 awk 的 pattern
awk '/$1/{print}' #
国外服务器
如何实现这样的效果 $1 被理解成位置参数,而不是第一列
-v var=val --assign=var=val
不是很理解你说的“ $1 被理解成位置参数”是什么意思,是指$1 为调用 awk 的 shell 脚本的参数吗?
如果是,那么你可以用-v 传递变量进 awk 然后再利用。例如
awk -v mypattern="$1" '$0 ~ mypattern {print}'
这样就把$1 赋值到 awk 里的变量 mypattern,而这个 mypattern 变量就可以用~来进行匹配运算。
awk "/$1/{print}" shell 会帮你做替换,替换完了才会给 sed
可以继续扩展,比如你想要 echo 出一个 '""'怎么做?
"" ''只是 shell 用来定界用的,想明白了这一点,你可以随便传你想要的
echo "'"'""'"'"
对头。
另外补充 bash 和 zsh 对单双引号的处理不一样,不知道其他的 shell 的处理都是什么样的。我一般会向 bash 看齐,写在 shebang 行。