如何在 shell 脚本中使用远程服务器上的带有远程变量的数组?

2023-12-07

这就是我正在尝试做的......

#!/bin/bash

array_local=(1 2 3 4 5)

ssh user@server << EOF
index_remote=1
echo \$index_remote
echo \${array_local[\$index_remote]}  
EOF

当我尝试运行上面的脚本时,我得到的 O/P 为 1 和空值(空格)。我希望 ${array_local[$index_remote} 值为 2 而不是 null,我需要使用远程变量访问此本地数组,以便在脚本中进行进一步的工作。


<<EOF结果变量扩展发生在本地计算机上,但您只定义了变量i在远程机器上。您需要仔细考虑要在哪里进行扩展。你没有在你的问题中解释是否有价值i是在客户端或服务器端定义的,但我从您后续的评论中猜测您希望它在服务器端完成。在这种情况下,您需要将数组内容传递给ssh,这需要仔细引用:

ssh hostname@server <<EOF
i=1
eval `typeset -p array_local`
echo \${array_local[\$i]}
EOF

typeset -p array_local将输出字符串

declare -a array_local='([0]="1" [1]="2" [2]="3" [3]="4" [4]="5")'

由于这是在反引号内,因此它将在客户端内扩展EOF- 分隔的heredoc,然后由服务器端评估eval。换句话说,它相当于:

ssh hostname@server <<'EOF'
i=1
declare -a array_local='([0]="1" [1]="2" [2]="3" [3]="4" [4]="5")'
echo ${array_local[$i]}
EOF

注意其中的差异EOF两个例子之间的引用。第一个允许参数和 shell 扩展,第二个则不允许。这就是为什么echo第一行中的行需要引用,以确保参数扩展发生在服务器端而不是客户端。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 shell 脚本中使用远程服务器上的带有远程变量的数组? 的相关文章

  • 在 UNIX 中删除相同的文件

    我正在处理大量 30 000 个 大小约为 10MB 的文件 其中一些 我估计 2 实际上是重复的 我只需要为每个重复的对 或三元组 保留一个副本 您能建议我一种有效的方法吗 我正在unix上工作 您可以尝试使用此代码片段在删除之前先获取所
  • Ruby,通过 SSH 和 LOG 逐一运行 linux 命令

    我想用 Ruby 女巫 net ssh 编写代码 在远程 Linux 机器上一一运行命令并记录所有内容 在 Linux 机器上称为命令 stdout 和 stderr 所以我写函数 def rs ssh cmds cmds each do
  • awk 返回两个变量

    现在这就是我正在做的事情 ret ls la awk print 3 9 usr echo ret awk print 1 fil echo ret awk print 2 问题是我没有运行ls我正在运行一个需要时间的命令 因此您可以理解其
  • shell解析json并循环输出组合变量

    杰斯克喜欢我之前的话题 https stackoverflow com questions 74063588 shell parsing json contains spaces in string 我知道如何解析带有空格的简单 json
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 在 bash 中,如何除以两个变量并输出四舍五入到小数点后 5 位的答案? [复制]

    这个问题在这里已经有答案了 我将两个变量作为输入 将它们相除后 我希望将输出四舍五入到小数点后 5 位 我已经尝试过这种方法 gt sum 12 n 7 output scale 5 sum n bc echo output 我的代码没有显
  • 带有二进制数据的 Bash echo 命令?

    有人可以解释一下为什么这个脚本有时只返回十六进制字符串表示形式的 15 个字节吗 for i in 1 10 do API IV openssl rand 16 API IV HEX echo n API IV od vt x1 w16 a
  • Ansible bitbucket 克隆配置 ssh 错误

    总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 主机密钥验证失败 然而 如果我流浪 ssh 然后运行 克隆 命令 私有存
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 无法从 bash 脚本使用 nvm

    我正在尝试编写一个 shell 脚本来自动设置我的开发环境 安装 python nvm node mongo 等 我正在使用 nvm 来安装 Node js 它告诉您关闭并重新打开终端以开始使用 nmv 命令 我尝试获取 bashrc 和
  • 通过 ssh 发送命令并读取输出结果

    我有代码通过 ssh 连接到远程服务器并向其发送 2 个或更多命令 例如 cd export home ops bin和 viewlinkload time 20131205 19 但我没有看到命令执行 也没有收到结果 我需要获取服务器返回
  • 批量检测系统是32位还是64位

    有谁知道如何创建一个批处理文件 如果是 64 位系统 可以对一个程序进行 shell 处理 如果是 32 位系统 则可以对另一个程序进行 shell 处理 检查 PROCESSOR ARCHITECTURE being x86 if PRO
  • Python 子进程:无法转义引号

    我知道以前曾问过类似的问题 但它们似乎都是通过重新设计参数的传递方式 即使用列表等 来解决的 但是 我这里有一个问题 因为我没有这个选项 有一个特定的命令行程序 我使用的是 Bash shell 我必须向其传递带引号的字符串 它不能不被引用
  • 通过 ssh 运行 Bash 脚本

    我正在尝试编写一个 Bash 脚本 它将通过 SSH 连接到计算机并创建一个目录 长期目标有点复杂 但现在我从简单的开始 然而 虽然很简单 但我似乎不太明白 这是我的代码 bin bash ssh T email protected cdn
  • AJAX 进度条 - 轮询、Comet?

    我想要一些关于如何实施以下内容的建议 我想让我的用户通过 AJAX 了解在我的服务器上运行的任务的进度 我的服务器运行一个 PHP 脚本 该脚本使用 popen 函数通过 shell 命令下载文件 它定期回显 打印正在发生的事情 我想使用
  • Shell 执行:时间与 /usr/bin/time

    当 bash zsh 执行以下操作时会发生什么 usr bin time l sleep 1 1 00 real 0 00 user 0 00 sys 516096 maximum resident set size 0 average s
  • 在 NodeJS 中运行 Conda 命令

    我无法使用以下命令运行 C onda 命令exec与我的 NodeJS 应用程序 var conda path miniconda3 bin conda var cmd conda path init bash conda path act
  • 通过 cron 进行 git 推送

    我正在尝试运行git push来自 cron 当我在 shell 上以交互方式执行命令时 一切顺利 从我的用户的 crontab 运行命令时 cron 会传递错误消息 Permission denied publickey 我认为这与查找或
  • 使用 JSch 分别为各个提示提供输入

    问题是 SSH 连接需要在常规登录后提供另一个用户 ID 和密码信息 我正在使用 JSch 连接到远程服务器 它接受以下形式的输入InputStream 和这个InputStream只能通过一次 由于会话是交互式的 这会导致问题 我尝试将输
  • Jenkins 通过 ssh 发布显示错误“jenkins.plugins.publish_over.BapPublisherException:无法添加 SSH 密钥。”

    为了使用 ssh 连接 jenkins 与远程服务器 我在 jenkins 中安装了通过 SSH 发布的插件 但配置后 它显示错误为 jenkins plugins publish over BapPublisherException 无法

随机推荐

  • 服务应用程序和 Google Analytics API V3:服务器到服务器 OAuth2 身份验证?

    我正在尝试制作一个服务器应用程序来定期从我自己的 GA 帐户中提取 Google Analytics 数据 请注意 这是一个访问我自己的数据的个人服务器端应用程序 即没有最终用户访问此应用程序 因此 我在谷歌 API 控制台 as a 服务
  • 如何应用参数/for循环

    目前我有一个程序可以查找两个 XYZ 坐标的点积 我如何将其放入循环中 以便它沿着坐标列表查找每个坐标相对于第一个坐标的点积 import operator vector1 int l 0 0 int l 0 1 int l 0 2 vec
  • 如何删除 Google App Engine 中的所有数据存储?

    有谁知道如何删除所有数据存储谷歌应用引擎 如果你说的是实时数据存储 打开应用程序的仪表板 登录 appengine 然后打开数据存储 gt dataviewer 选择要删除的表的所有行 然后单击删除按钮 您必须对所有表执行此操作 您可以通过
  • 检测用户是否具有管理员权限

    如何确定当前用户 运行我的应用程序的用户 是否具有管理员权限 即是管理员组的成员 我需要为访问权限有限的用户以不同的方式注册一些 COM 组件 我正在使用 C WTL 和 Win32 IsUserAnAdmin 是快速且简单的方法 但 MS
  • 获取州名称而不是 Woocommerce 中的代码

    我使用此处的代码向我的 woocommerce 添加了自定义状态列表 https docs woocommerce com document addmodify states 新添加的状态在前端和某些后端屏幕上加载良好 但是在电子邮件和用户
  • 按对象数组过滤 searchController

    我创建了一个 searchController 因此我尝试让它根据 UISearchController 中的文本过滤内容 我创建了一个如下所示的自定义对象 我尝试过使用 NSPredicate 但不断收到 cannot convert v
  • 每次在 getView 中视图都会膨胀。 findViewById(...) 已执行多次。我用过View Holder

    public View getView final int pos View arg1 ViewGroup arg2 ViewHolder holder View view arg1 if arg1 null holder new View
  • 如何使用 python 写回到谷歌文档电子表格中的某个单元格

    所以问题是 我从电子表格中的行的第一列 例如 A2 获取一些信息 然后我将对该信息进行一些检查 之后我想将结果写回该行的下一列 我怎么做 是否有某种功能可以让我指示后面 前面 上面 下面的列 所以我可以在该单元格中写入信息 当然 Pytho
  • python AttributeError:模块“pygame”没有属性“display”

    我开始使用 Python 特别是 pygame 模块 但是当我尝试创建一个窗口时 会发生此错误 gt gt gt import pygame gt gt gt width height 300 200 gt gt gt screen pyg
  • 另一台机器的时间

    在 C 中 当我们使用 DateTime Now 时 属性值是本地计算机的当前日期和时间 如何获取另一台具有IP地址或机器名称的机器的时间 您可以通过编写一个为您提供当前时间的服务来实现吗 或连接到远程计算机并发送一些 wmi 查询 类似问
  • OnDraw() 未触发,surfaceView 中未绘制任何内容 - Android

    你好 我在水平滚动视图中有一个 SurfaceView 我想通过 onDraw 调用来填充图像 然而 什么也没有绘制 我有一个类 其中的绘图是通过线程 CanvasThread 完成的 public class PanelChart ext
  • R read.csv - 带有特定符号(>)的标题

    当我通过 R 读取 csv 文件时 所有特定符号 gt 例如 csv 文件 用户 gt 75 R 显示用户 75 我怎样才能避免这种情况 您可以使用check names FALSE在你的read csv call From read cs
  • 索引如何提高 mongodb 中的查询性能

    我需要了解 mongo 中的索引如何提高查询性能 目前我的数据库没有索引 我如何为现有数据库建立索引 我还需要创建一个仅用于索引的新字段吗 从根本上来说 MongoDB 中的索引与其他数据库系统中的索引类似 MongoDB 支持 Mongo
  • Visual Studio NugetPackageManager 界面中的“版本”列有何意义? (与“已安装”列不同)

    已安装 列已填充 但 版本 列未填充 版本 栏是什么意思 与 已安装 列不同 我熟悉语义版本的概念 所以我确切地知道版本号的概念对于 nuget 包意味着什么 我想知道到底是什么that列于that接口意思 后续关于空白的问题结束了here
  • 蓝鸟承诺范围

    我刚刚开始使用承诺来尝试清理一些 回调地狱 我决定尝试 bluebird 并在浏览器中运行它 但立即遇到了范围界定问题 有没有办法在新的 Promise 中设置 thisArg 下面的示例显示承诺解析器内的 this 值设置为浏览器窗口 但
  • Bitmap.getPixel 始终返回黑色

    我正在创建一个应用程序 其中涉及获取屏幕部分的颜色 为此 我使用 Bitmap getPixel 方法来检索屏幕的指定像素 然后将其转换为 RGB 格式 以便以后更轻松地进行编码 问题是 当我使用 getPixel 方法时 无论屏幕上是什么
  • 使用 cygwin 在 Windows 上安装 GMP

    我是 C 新手 我必须处理大整数 所以我必须通过 Cygwin 安装 GMP 我能找到的有关安装此程序的任何文档都假设您知道自己在说什么 而我确实不知道 无论如何 我有权利 tar或者其他什么 正确提取它 现在我看到的任何网站都说要运行 c
  • 如何修复 java Apache POI 中的 NotOfficeXmlFileException?

    我正在尝试创建一个新的 Excel 文件 其中仅包含 hello 这是我的代码 import java io File import java io FileInputStream import java io FileNotFoundEx
  • 将 html 文本添加到超大 jquery 图像幻灯片

    我只想将 html 文本添加到著名的图像滑块超大的 这是他们的演示页面 http buildinternet com project supersized slideshow 3 2 demo html 该 html 可以正好位于演示中 m
  • 如何在 shell 脚本中使用远程服务器上的带有远程变量的数组?

    这就是我正在尝试做的 bin bash array local 1 2 3 4 5 ssh user server lt lt EOF index remote 1 echo index remote echo array local in