我注意到这很好(只打印unattended-upgrades进程的PID ):
lslocks | awk '/unattended-upgrades/ { print $2 }'但这实际上忽略了print部件(将打印整行):
bash -c "lslocks | awk '/unattended-upgrades/ { print $2 }'"这是一个Ubuntu18.04和Bash版本4.4.20。
导致这种情况的bash -c空间是什么?
发布于 2022-03-18 01:52:28
bash -c在这里没有什么特别之处--它的外部双引号允许通过交互式shell扩展$2:
$ set -x
$ bash -c "echo foo bar | awk '{ print $2 }'"
+ bash -c 'echo foo bar | awk '\''{ print }'\'''
foo bar(这里的“棘手”是单引号在双引号中并不特殊;外部双引号“保留其字面值”。见Bash参考手册3.1.2.3双引号.)
比较:
$ bash -c "echo foo bar | awk '{ print \$2 }'"
+ bash -c 'echo foo bar | awk '\''{ print $2 }'\'''
barhttps://unix.stackexchange.com/questions/695871
复制相似问题