加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 在heredoc部分设置变量

发布时间:2020-12-15 21:38:05 所属栏目:安全 来源:网络整理
导读:我是一个 shell脚本新手,所以我必须做一些愚蠢的事情,为什么这不会起作用: #!/bin/shmyFile=$1while read linedossh $USER@$line ENDSSHls -d foo* | wc -l count=`ls -d foo* | wc -l`echo $countENDSSHdone $myfile 应打印两行,每行应具有相同的值……但
我是一个 shell脚本新手,所以我必须做一些愚蠢的事情,为什么这不会起作用:

#!/bin/sh

myFile=$1

while read line
do
ssh $USER@$line <<ENDSSH
ls -d foo* | wc -l 
count=`ls -d foo* | wc -l`
echo $count
ENDSSH
done <$myfile

应打印两行,每行应具有相同的值……但它们不具有相同的值.第一个print语句[ls -d foo * |的结果wc -l]具有正确的值,第二个print语句不正确,它始终打印为空白.我需要做一些特殊的事情来将值分配给$count吗?

我究竟做错了什么?

谢谢

解决方法

#!/bin/sh

while read line; do
  echo Begin $line
  ssh $USER@$line << ENDSSH
  ls -d foo* | wc -l 
  count=`ls -d foo* | wc -l`
  echo $count
ENDSSH
done < $1

你的脚本唯一的问题是,当没有引用heredoc令牌时,shell会进行变量扩展,因此在远程命令发布之前,本地shell正在扩展$count …

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读