如何在awk命令中传入Shell变量USER查询挂载的网络文件夹
解决Awk中引用Shell变量的问题
Shell不会解析单引号内部的变量,所以你直接在awk的单引号脚本里写$USER,它会被当成字面字符串处理,自然无法匹配到正确内容。给你三种可行的解决方法:
方法一:用awk的
-v选项传递变量(推荐)
这是最清晰、最不易出错的方式,把Shell变量传递给awk内部变量后再使用:df | awk -v user="$USER" '$0 ~ user"@192.168.1.10" { print $1 }'这里
-v user="$USER"将Shell的USER变量值赋值给awk的user变量,然后用~运算符匹配拼接后的字符串。方法二:用双引号包裹awk脚本(需转义内部$)
双引号内的Shell变量会被解析,但要注意把awk自己的$0、$1等字段变量转义,避免被Shell提前解析:df | awk "\$0 ~ \"$USER@192.168.1.10\" { print \$1 }"方法三:拼接单双引号
将awk的单引号脚本拆分成几段,中间用双引号包裹需要解析的Shell变量,让Shell先解析变量再拼接成完整的awk脚本:df | awk '/'"$USER"'@192.168.1.10/ { print $1 }'
内容的提问来源于stack exchange,提问作者andio
相关产品推荐
相关产品推荐

