2011-02-14 37 views
4

我是一个shell脚本的新手,所以我必须做一些愚蠢的事,为什么不这项工作:组可变

#!/bin/sh 

myFile=$1 

while read line 
do 
ssh [email protected]$line <<ENDSSH 
ls -d foo* | wc -l 
count=`ls -d foo* | wc -l` 
echo $count 
ENDSSH 
done <$myfile 

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

我在做什么错?

感谢

回答

7
#!/bin/sh 

while read line; do 
    echo Begin $line 
    ssh [email protected]$line << \ENDSSH 
    ls -d foo* | wc -l 
    count=`ls -d foo* | wc -l` 
    echo $count 
ENDSSH 
done < $1 

与脚本唯一的问题是,当定界符令牌没有报价,外​​壳不变量扩展,所以$count正由当地的外壳扩展远程命令被运走之前, ...

+0

This Works!谢谢。既然你提到引用heredoc令牌,我试过了,它也可以。你能解释我何时应该引用heredoc token吗?谢谢。 – anio 2011-02-14 17:14:32