我是一个 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 吗?
我做错了什么?
谢谢
最佳答案
#!/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
。 ..
关于bash - 在 heredoc 部分设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994601/