首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在单个ssh命令中使用bash $(awk)?

如何在单个ssh命令中使用bash $(awk)?
EN

Stack Overflow用户
提问于 2013-02-05 20:13:38
回答 3查看 41.2K关注 0票数 23

我试图通过ssh执行一个包含sub-code或$(子代码)(我一直使用它,但我不知道它的正式名称)的命令,首先在目标服务器上执行。

为了便于讨论,假设这是我要使用的命令。当然,这可以使用hostname来完成,但这只是一个简化的示例,其中包含了我想要使用的所有格式设置向导。

代码语言:javascript
复制
echo `uname -a | awk '{print $2}'`

没问题。但是,如何正确地转义它,以便在一个命令中通过ssh发送它呢?下面的内容是错误的,因为它让服务器回复您的本地主机名。子代码在本地执行:

代码语言:javascript
复制
ssh myServer echo `uname -a | awk '{print $2}'`

但脑海中浮现的任何逃避都是行不通的:

代码语言:javascript
复制
$ ssh myServer echo \`uname -a | awk '{print $2}'\`
awk: cmd. line:1: {print $2}`
awk: cmd. line:1:           ^ invalid char '`' in expression
$ ssh myServer echo \$(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `('
$ ssh myServer echo \$\(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `)'
$ ssh myServer echo \$\(uname -a | awk '{print $2}'\)
awk: cmd. line:1: {print $2})
awk: cmd. line:1:           ^ syntax error
bash: -c: line 0: unexpected EOF while looking for matching `)'
bash: -c: line 1: syntax error: unexpected end of file

我想要一个包括使用正确转义的` or $() because I'd like to know if it's possible.回显的答案。

EN

回答 3

Stack Overflow用户

发布于 2013-02-05 20:28:19

如何通过管道传输命令的输出并在本地运行awk?

代码语言:javascript
复制
ssh yourhost uname -a | awk '{ print $2 } '
票数 5
EN

Stack Overflow用户

发布于 2019-10-04 21:10:25

只是一些额外的注意事项:

在我的例子中,$的转义没有帮助:

代码语言:javascript
复制
ts1350:> ssh sysadm@node "grep feature features.txt| awk '{print $6}' "
Password: 
A  feature   -name  ue_trace_mme    | off
ts1350:> ssh sysadm@node "grep feature features.txt| awk '{print \$6}' "
Password: 
awk: cmd. line:1: {print \}
awk: cmd. line:1:        ^ backslash not last character on line
awk: cmd. line:1: {print \}
awk: cmd. line:1:        ^ syntax error
ts1350:> ssh sysadm@node "grep feature features.txt| awk '{print \\$6}' "
Password: 
awk: cmd. line:1: {print \\}
awk: cmd. line:1:        ^ backslash not last character on line
awk: cmd. line:1: {print \\}
awk: cmd. line:1:        ^ syntax error

当在$和数字之间添加一个space时:

代码语言:javascript
复制
Fri Oct  4 14:49:28 CEST 2019
ts1350:> ssh sysadm@node "grep feature features.txt| awk '{print $ 6}' "
Password: 
off

希望这种第二种方式能帮助像我这样的人。

感谢@dave在他的回答中:How to print a specific column with awk on a remote ssh session?

票数 3
EN

Stack Overflow用户

发布于 2013-05-15 04:27:59

如果您正在尝试获取主机名,请使用:

ssh myServer "uname -n"

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14707307

复制
相关文章

相似问题

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