首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >awk打印在bash -c中不工作。

awk打印在bash -c中不工作。
EN

Unix & Linux用户
提问于 2022-03-18 01:44:04
回答 1查看 401关注 0票数 2

我注意到这很好(只打印unattended-upgrades进程的PID ):

代码语言:javascript
复制
lslocks | awk '/unattended-upgrades/ { print $2 }'

但这实际上忽略了print部件(将打印整行):

代码语言:javascript
复制
bash -c "lslocks | awk '/unattended-upgrades/ { print $2 }'"

这是一个Ubuntu18.04和Bash版本4.4.20。

导致这种情况的bash -c空间是什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-03-18 01:52:28

bash -c在这里没有什么特别之处--它的外部双引号允许通过交互式shell扩展$2

代码语言:javascript
复制
$ set -x
$ bash -c "echo foo bar | awk '{ print $2 }'"
+ bash -c 'echo foo bar | awk '\''{ print  }'\'''
foo bar

(这里的“棘手”是单引号在双引号中并不特殊;外部双引号“保留其字面值”。见Bash参考手册3.1.2.3双引号.)

比较:

代码语言:javascript
复制
$ bash -c "echo foo bar | awk '{ print \$2 }'"
+ bash -c 'echo foo bar | awk '\''{ print $2 }'\'''
bar
票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/695871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档