我有这条线:
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/