4

我是一个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

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

我究竟做错了什么?

谢谢

4

1 回答 1

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

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

于 2011-02-14T16:38:58.803 回答