我是一个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?
我做错了什么?
由于
答案 0 :(得分: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会进行变量扩展,因此在远程命令发布之前,本地shell正在扩展$count
...