ssh - 在对 awk 的 ssh 远程调用中转义感叹号?

标签 ssh awk

我有这条线:

ssh server1 "df -h | sed 's/%/ /g' | awk '{ if (\$5 > 90 && !/^[a-zA-Z]/) { var1=1 }} END { if (var1 == 1) { print 1 } else { print 0 }}'"

但是,这会产生以下错误:
bash: !/^[a-zA-Z]/: event not found

不太确定我应该如何逃避感叹号。有任何想法吗?

问候,

大卫

最佳答案

Bash 评估 !即使在双引号中也可以进行历史操作。如果你在引号内转义它,你只会得到 \! (说真的,wtf bash?)。您必须结束双引号,添加 '!'\! , 并重新打开双引号。

ssh server1 "df ... && "\!"/^[a-zA-Z]/...}}'"

作为记录, zsh 正确处理双引号内的反斜杠转义( "\!" -> ! )。

关于ssh - 在对 awk 的 ssh 远程调用中转义感叹号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22018002/

相关文章:

perl - 使用 Net::SSH2 检索 top 命令的输出

awk - 检查字段是否为awk中的整数

linux - AWK 输出中不需要的零

ssh - 不能使用 Cygwin 使用 GSSAPI(Kerberos 身份验证方法)ssh 吗?

networking - 通过 SSH 隧道访问 LDAP

ubuntu - ssh 上的多 channel 超时

bash - 如何在使用Shell脚本的空白字符串之前获取第一个字符串?

Linux 文本文件操作

bash - 如何按编号的百分比拆分文件。线?

amazon-web-services - gitlab CI:加载 key 错误:格式无效