shell远程执行命令无法将命令结果给变量赋值问题

news/2024/7/5 2:28:14

远程执行命令,使用 “<<EOF” 的方式叫做 Heredoc,如果内部使用了变量,实际上是在本地shell做了替换,再提交到远程shell执行!

关于HereDoc:https://linuxize.com/post/bash-heredoc/#using-heredoc-with-ssh
使用无引号分隔符时,请确保转义所有变量、命令和特殊字符,否则将在本地进行插值!

$变量,默认是提前在本地shell替换。$(命令),默认是提前在本地shell执行。

比如,在 node1(192.168.0.1) 执行如下命令:

ssh -q root@node2 <<EOF
  echo $HOSTNAME
  log=$(hostname -I)
  echo $log
EOF

实际上 node2(192.168.0.2) 执行的命令为:

    echo node1
    log=192.168.0.1 #如果命令返回带有空格,这里还会报错“命令不存在”,让人摸不着头脑
    echo 

可以看到,node2执行的命令都是被提前执行。

解决:避免替换变量和执行命令,进行转义。

方式一:将 ‘$’ 改成 ‘\$’
上述代码改成:

ssh -q root@node2 <<EOF
  echo $HOSTNAME
  log=\$(hostname -I) #注意前缀
  echo \$log #注意前缀
EOF

实际node2执行的命令为:

    echo node1
    log=$(hostname -I) #在node2才执行 hostname -I
    echo $log #在node2才打印变量

方式二:将 EOF 改成 ‘EOF’,相当于全局禁用变量替换和命令执行!

ssh -q root@node2 <<'EOF'
  echo $HOSTNAME
  log=$(hostname -I)
  echo $log
EOF

实际node2执行的命令为:

  echo $HOSTNAME #打印node2
  log=$(hostname -I) #在node2执行
  echo $log #打印192.168.0.2

end


http://lihuaxi.xjx100.cn/news/1571481.html

相关文章

ubuntu20.04部署ntp服务器ntpd(ntpdate )

文章目录 步骤1. 安装NTP2. 配置NTP3. 重启NTP服务4. 检查NTP服务状态5. 验证NTP同步ntpq -p检查本地ntp服务是否正常服务器不能连外网&#xff0c;如何配置&#xff1f; ntpdate -q xxx查询ntp服务器时间 步骤 1. 安装NTP 首先&#xff0c;在终端中更新你的包列表&#xff0…

[补题记录] Atcoder Beginner Contest 321(E)

URL&#xff1a;https://atcoder.jp/contests/abc321 目录 E Problem/题意 Thought/思路 Code/代码 E Problem/题意 有一颗 N 个节点的完全二叉树&#xff0c;现在给出节点 X&#xff0c;一个整数 K&#xff0c;问举例节点 X 的长度为 K 的点有多少个&#xff1f; Thoug…

【LeetCode热题100】--238.除自身以外数组的乘积

238.除自身以外数组的乘积 思路&#xff1a; 利用索引左侧所有数字的乘积和右侧所有数字的乘积&#xff08;即前缀和后缀&#xff09;相乘得到答案 算法&#xff1a; 1.初始化两个空数组L和R&#xff0c;对于给定索引i&#xff0c;L[i]代表的是i左侧所有数字的乘积&#xff…

【算法小课堂】滑动窗口

滑动窗口 基本概念&#xff1a; 滑动窗口本质是双指针算法的一种演变 本质上就是同向双指针&#xff0c;窗口的范围就是[left,right&#xff09; 滑动窗口大致可以分为两类 窗口大小不变的窗口大小变化的 滑动窗口遇到一些验证重复性的问题的时候可以用哈希表来优化 核心思想…

​全球人类读书会《乡村振兴战略下传统村落文化旅游设计》中国建筑出版传媒许少辉博士著作

​全球人类读书会《乡村振兴战略下传统村落文化旅游设计》中国建筑出版传媒许少辉博士著作

接口自动化测试数据驱动DDT模块使用

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 一、DDT简单介绍 名称&#xff1a; Data-Driven Tests&#xff0c;数据驱动测试 作用&#xff1a; 由外部…

SpringMvc-HttpMessageConverter接口

虽然本文命题是HttpMessageConverter&#xff0c;但是常用的场景是修改字段值&#xff0c;如果不是&#xff0c;那你自定义Converter是为了什么&#xff1f;&#xff1f;&#xff1f; HttpMessageConverter是也是数据绑定接口&#xff0c;它负责实现HandlerMethodArgumentReso…

完成“重大项目”引进签约,美创科技正式落户中国(南京)软件谷

近日&#xff0c;美创科技正式入驻中国&#xff08;南京&#xff09;软件谷&#xff0c;并受邀出席中国南京“金洽会"之“雨花台区数字经济创新发展大会”。美创科技副总裁罗亮亮作为代表&#xff0c;在活动现场完成“重大项目”引进签约。 作为国家重要的软件产业与信息服…