linux 主机与容器内:bash命令与awk返回不同结果

piwo6bdm  于 2022-11-22  发布在  Linux
关注(0)|答案(1)|浏览(152)

命令在容器内运行

root@foo:/# for pid in `ps -ax|awk '{print $1}'` ;do echo $pid; done
PID
1
17
18
34
1792
2952
3623
3649
3650
3651

但是,当我从主机运行相同的命令时

[ec2-user@ip-x ~]$ docker exec b1b  bash -c "for pid in `ps -ax|awk '{print $1}'` ;do echo $pid; done"
bash: -c: line 1: syntax error near unexpected token `1'
bash: -c: line 1: `1'

我试着在基于here的aws中转义$,但没有任何运气

docker exec b1b  bash -c "for pid in `ps -ax|awk \"{print \$1}\"`;do echo $pid; done"
bash: -c: line 1: syntax error near unexpected token `1'
bash: -c: line 1: `    1 ?        Ss    10:56 /usr/lib/systemd/systemd --system --deserialize 21'

我希望在容器内部运行与从主机运行时命令返回相同的结果

pqwbnv8z

pqwbnv8z1#

只需对bash -c使用“”,它就能正常工作:

docker exec b1b  bash -c 'for pid in `ps -ax|awk "{print \\$1}"`;do echo $pid; done'

例如:

# docker exec 06 bash -c 'for pid in `ps -ax|awk "{print \\$1}"`;do echo $pid; done'
PID
1
88
93
94
95

相关问题