在heredoc部分设置变量

ani*_*nio 4 bash shell heredoc

我是一个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
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

谢谢

Dig*_*oss 7

#!/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
Run Code Online (Sandbox Code Playgroud)

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