是否可以在远程 ssh 命令中使用变量?

2024-04-15

我想在远程计算机上按顺序执行多个命令,并且后面的一些命令依赖于前面的命令。在最简单的例子中,我得到了这个:

ssh my_server "echo this is my_server; abc=2;"
this is my_server
abc=2: Command not found.
ssh my_server "echo this is my_server; abc=2; echo abc is $abc"
abc: undefined variable

对于一些背景信息,我实际上想做的是拼凑一条路径并启动一个 java 应用程序:

ssh my_server 'nohup sh -c "( ( echo this is my_server; jabref_exe=`which jabref`; jabref_dir=`dirname $jabref_exe`; java -jar $jabref_dir/../jabref.jar` $1 &/dev/null ) & )"' &
jabref_dir: Undefined variable.

这样,每当 jabref 在服务器上更新到新版本时,我就不必手动更新 jar 文件的路径。 jabref 可执行文件不接受参数,但使用以下命令启动它java -jar确实如此,这就是为什么我必须稍微调整一下路径。

目前我有一个单独的脚本文件中的命令列表并调用

ssh my_server 'nohup sh -c "( ( my_script.sh &/dev/null ) & )"' &

这是可行的,但由于 ssh 调用已经在一个脚本文件中,因此将所有内容放在一起会很好。


在这个例子中

ssh my_server "echo this is my_server; abc=2;"

abc是在远程端设置的,所以应该清楚为什么在本地机器上没有设置。

在下一个示例中,

ssh my_server "echo this is my_server; abc=2; echo abc is $abc"

你的本地 shell 尝试扩展$abc在将其发送到远程主机之前的参数中。稍微修改一下就会如您所期望的那样工作:

ssh my_server 'echo this is my_server; abc=2; echo abc is $abc'

单引号会阻止本地 shell 尝试扩展$abc,因此文字文本会到达远程主机。


要最终解决您真正的问题,请尝试以下操作:

jabref_dir=$( ssh my_server 'jabref_exe=$(which jabref); jabref_dir=$(dirname $jabref_exe);
               java -jar $jabref_dir/../jabref.jar > /dev/null; echo $jabref_dir' )

这将在远程服务器上将带引号的字符串作为命令运行,并准确输出一个字符串:$jabref_dir。该字符串被捕获并存储在本地主机上的变量中。

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

是否可以在远程 ssh 命令中使用变量? 的相关文章

  • 如何 grep 文件中不区分大小写的字符串?

    我有一个文件file1其结尾为Success OR success 我想要grep为了这个词success以一种不区分大小写的方式 我写了以下命令 但它区分大小写 cat file1 grep success 我怎样才能改变它 以便它ret
  • Ruby Net:SSH控制大师?

    我目前有一个 Ruby Rails 应用程序 需要建立大量的短 SSH 连接 使用 Ruby Net SSH 库可以正常工作 只是每次我想发出命令时应用程序都必须登录并协商密钥 这太慢了 有没有办法使用 Ruby Net SSH 启用 Co
  • 如何从脚本编辑 /etc/sudoers?

    我需要编辑 etc sudoers从脚本中添加 删除白名单中的内容 假设我有一个可以处理普通文件的命令 我如何将其应用到 etc sudoers 我可以复制并修改它 然后有visudo用修改后的副本替换原始版本 通过提供我自己的脚本 EDI
  • Git - 显示远程分支的远程名称

    是否有一个 Git 命令可以显示远程分支的远程名称 目前 我坚持使用 shell utils 从远程分支引用中提取远程名称 例如 echo remote name branch name sed r s 1 remote name 有时出于
  • system 和 shell_exec 之间的区别

    有什么区别shell exec and systemPHP 中的方法 两者都采用单个命令行参数并在 PHP 中运行 使用其中一种比另一种更好吗 请参阅此处的解释 http chipmunkninja com Program Executio
  • 为什么 cygwin 无法读取我的主目录中的 .ssh/config 文件?

    我正在使用 cygwin 并且正在尝试设置 ssh config 文件 Cygwin 的文件夹位于我的 C 驱动器中 我的主目录是 C Users USER 我注意到 当我编辑 C Users USER ssh config 时 cygwi
  • 使用 shell=True 将 PATH 设置为 bitbake 的“source”在 Python 中没有效果

    下面是shell脚本中的代码 source proj common tools repo etc profile d repo sh repo project init branch repo project sync source pok
  • 在 bash 中添加(收集)退出代码

    我需要依赖于脚本中的几个单独的执行 并且不想将它们全部捆绑在一个丑陋的 if 语句中 我想使用退出代码 每次执行并添加它 最后 如果这个值超过阈值 我想执行一个命令 伪代码 ALLOWEDERROR 5 run something RESU
  • 如何使用 docker ENTRYPOINT 与 shell 脚本文件组合参数

    我编写 shell 脚本文件并将其与 docker ENTRYPOINT 一起使用 但是当我运行 docker image 时 由于入口点代码行 它只是停止而没有任何错误日志 我的 Dockerfile FROM ubuntu 16 04
  • 允许 Amazon VPC A 访问 VPC B 上的新私有子网吗?

    我有一个现有的 VPC vpcA 并且最近设置了一个新的 VPC vpcB 同时具有私有子网 privateSubnet 和公共子网 publicSubnet 我想允许来自以下位置的连接vpcA to vpcB vpcB设置了堡垒服务器以允
  • Bash:递归复制命名文件,保留文件夹结构

    我希望 cp R src prog js images icon jpg tmp package 将在目标目录中产生对称结构 tmp package src prog js images icon jpg 但相反 这两个文件都被复制到 tm
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • 如何使用受密码保护的私有 ssh 密钥连接 MySQL Workbench?

    我在使用受密码保护的密钥通过 SSH 连接工作台时遇到问题 我不知道必须将密码密钥放在工作台中的何处 它告诉我 无 拒绝访问 可以继续的身份验证 公钥 我的凭据正确 我可以使用同一用户通过终端 SSH 连接 所以这让我认为这是因为我的 ss
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 在 VBA 中捕获 shell 命令的输出值?

    发现这个功能http www cpearson com excel ShellAndWait aspx http www cpearson com excel ShellAndWait aspx 但我还需要捕获 shell 的输出 有什么代
  • 当我在 C 中将 long int 赋值给 int 时会发生什么?

    在最近的作业中 我被告知要使用long变量来存储结果 因为它可能是一个很大的数字 我决定在我的系统 英特尔酷睿 i5 64 位 Windows 7 gnu gcc 编译器 上检查这对我来说真的很重要 并发现以下代码 printf sizeo
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • 如何登录ec2机器?

    我获得了 EC2 机器的一些登录信息 基本上是 ec2 X X X compute X amazonaws com 加上用户名和密码 如何访问机器 我尝试过 ssh ssh email protected cdn cgi l email p
  • 在 macOS 上使用 find 时出现“非法选项”错误

    我试图列出末尾仅带有字母 R 的文件 我用了find在 macOS 终端中如下所示 find type f name R 但我收到消息说illegal option t 第一个参数find是它应该开始寻找的路径 路径 表示当前目录 find

随机推荐

  • 如何使用不同用户表的多重身份验证注销 JWT 令牌

    这是 config auth php 中的代码 guards gt web gt driver gt session provider gt users api gt driver gt jwt provider gt users hash
  • 领域文件的大小是如何发展的?

    领域文件的大小是如何发展的 首先 我有一个包含多个属性的领域文件 其中一个是包含 860 个条目的数组 每个数组条目又包含几个属性 一个数组属性声明条目的名称 我观察到以下情况 如果名称属性为 Criteria A1 直到 Criteria
  • SKReceiptRefreshRequest 每次都询问密码

    我在用SKReceiptRefreshRequest验证来自服务器的收据 问题是每次提示密码时它都会询问我 谁能帮我建议一种更好的方法来验证用户收据 这就是我正在做的事情 我正在使用refreshReceipt当应用程序启动时 void r
  • 如何将 GridLayout.Spec 用于扩展多行的列?

    我正在尝试动态创建一个 2 行 4 列的表 但每种情况下行和列的大小不应相同 也许我会附上一张图片 我想 据我了解 当我不使用 XML 标记来使用 setLayoutParams 中的 GridLayout Spec 来实现此目的时 但我不
  • 如何让属性设置器通过SQL函数发送值

    我试图在 Rails 生成其 sql 查询之前 使 ActiveRecord 模型中的属性设置器将其值包装在 text2ltree postgres 函数中 例如 post path 1 2 3 post save 应该生成类似的东西 UP
  • 对象“_Application”的方法“VBE”失败

    我的一位客户在运行下面的 Excel VBA 代码时遇到问题 他收到以下错误Method VBE of object Application failed 但只有一次 在他打开 VBE 后 它开始工作 而且 直到昨天 它还对他有效 他正在使
  • 如何在 Angular 4 中为数字管道指定语言环境千位分隔符

    例如 如何为 Angular 4 中的数字管道指定 覆盖默认 区域设置 千位分隔符 p total number 角度 5 从 Angular 5 开始 区域设置参数已添加到十进制管道中 如官方文档中所示 https angular io
  • 将多个 go 例程的响应获取到数组中

    我需要从多个 go 例程获取响应并将它们放入一个数组中 我知道通道可以用于此目的 但是我不确定如何确保所有 go 例程都已完成结果的处理 因此我正在使用等待组 Code func main log Info Collecting ints
  • 允许使用 Angular FileSaver.js 选择目录

    我在用文件保存器 js https github com eligrey FileSaver js从 Angular 保存文件 但是 我想允许用户选择目录 我怎样才能做到这一点 我不相信这是可能的 浏览器可以选择是否向用户显示 另存为 对话
  • 找不到模块“rxjs/subject/BehaviorSubject”

    我正在使用 Angular 2 当我使用这两者中的任何一个时 我的程序运行良好 import BehaviorSubject from rxjs Rx import BehaviorSubject from rxjs 但是 我尝试使用以下方
  • 从 Delphi 组件捕获 WM_COPYDATA

    我正在尝试编写一个组件 通过 WM COPYDATA 在应用程序之间发送字符串消息 我想捕获 WM COPYDATA 但这不起作用 TMyMessage class TComponent private Private declaratio
  • 如何将 Liquid 标签突出显示在有序列表中?

    这就是我want页面为 ol li first li li second code code li li third li ol 这就是我正在写的 1 first 2 second highlight ruby code here endh
  • 验证外键时 Accepts_nested_attributes_for 出现问题

    我正在使用 Ruby on Rails v3 2 2 我想解决使用时与外键验证相关的问题accepts nested attributes for and validates associated回报率方法 也就是说 我有以下模型类 cla
  • SQLite 区分大小写的搜索,带有整理 nocase 字段

    我有一个数据库 我无法更改 它有一个整理 nocase 字段 name string collate nocase 我需要对此区分大小写的字段进行搜索 这可以通过 整理 nocase 实现吗 Thanks Just 切换排序规则 http
  • SQL - 返回有限的行数,但返回完整的行数

    场景 我需要从 Visual FoxPro 数据库中提取信息 但是 对此运行大型查询可能会导致系统锁定 为了解决这个问题 我们设置了限制 如果查询运行超过一定时间 则取消查询 并限制它将返回的行数 有没有办法使用 SELECT TOP 进行
  • 是否可以使用 HTML5 创建垂直仪表?

    通常 如果我创建
  • 当用户更改活动进程时触发事件

    当程序用户将活动窗口更改为不同进程的窗口时 是否有一个事件或创建事件的方法会触发 如果没有这样的事件 那么制作类似的东西的最佳方法是什么 我目前有一个每 3 秒运行一次 Process GetCurrentProcess 的计时器 但我正在
  • dll 中的 Delphi 表单

    将具有完整功能的Form放在dll中是个好主意吗 主应用程序将调用返回表单对象的 dll 函数 在 Delphi 中执行此操作的公认方法是使用包而不是 DLL 包本质上是 DLL 但具有 Delphi 特定功能 允许跨包边界使用 VCL 对
  • 当增量值重新开始时如何排除行?

    我是一个新手海报 但花了很多时间在这里研究答案 我不太清楚如何使用 SQL Server 2008 R2 创建 SQL 结果集 它可能应该使用更现代版本的超前 滞后 我试图根据一列的排序来聚合数据 但每个序列中可能有不同数量的实例 我知道序
  • 是否可以在远程 ssh 命令中使用变量?

    我想在远程计算机上按顺序执行多个命令 并且后面的一些命令依赖于前面的命令 在最简单的例子中 我得到了这个 ssh my server echo this is my server abc 2 this is my server abc 2