bash - 如何使用局部变量跨 SSH 运行 awk 命令 - Bash
问题描述
我有一个命令,它使用awk
我试图通过 SSH 远程运行。
这是在本地运行时的命令和示例输出:
df -h -P | awk '{print $1,$2,$3,$5,$6}'
Filesystem Size Used Use% Mounted
/dev/mapper/volgroup00-lv_root 3.9G 2.7G 74% /
tmpfs 2.9G 0 0% /dev/shm
/dev/mapper/volgroup00-lv_seemis 4.4G 3.6G 87% /STORE
/dev/sda1 477M 195M 44% /boot
/dev/sdb1 30G 26G 90% /data
该命令的输出然后由我的脚本的其余部分处理。但是,当我尝试远程运行该命令时,它会产生错误。这是远程命令及其产生的错误的示例(其中$servername
是服务器的 FQDN 并且$user
是 SSH 用户):
timeout 10s ssh -n $user@$servername "df -h -P | awk '{print $1,$2,$3,$5,$6}'"
awk: cmd. line:1: {print ,,,,}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {print ,,,,}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {print ,,,,}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {print ,,,,}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {print ,,,,}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {print ,,,,}
awk: cmd. line:1: ^ unexpected newline or end of string
我觉得这与远程运行命令时使用 $1、$2 等有关。如何解决awk
正在产生的这个错误?
解决方案
在每个 $NUM 变量之前添加一个反斜杠可以解决问题:
timeout 10s ssh -n $user@$servername "df -h -P | awk '{print \$1,\$2,\$3,\$5,\$6}'"
该命令返回了预期的结果。
推荐阅读
- sql - 使用数据库迁移服务 (DMS) 将数据从 On Prem 服务器迁移到 Azure DB 时出错
- angular - 角度解析器问题
- reactjs - 基于webpack的react app部署
- json - 无法从 url 获取附件
- r - 在ggplot / R的组合箱线图中使用分类协变量的困难
- python - 使用 pika python 模块时使用 SSL 到远程 rabbitmq 实例的连接错误
- c# - 如何将值从 HTML 控件传递到 ASP.NET 服务器?
- sql - 获取上一年直到五月
- node.js - 如何阻止nodejs中的所有执行
- android - 带有自定义 LayoutManager 的 RecyclerView 不显示滚动条