bash - 在 heredoc 部分设置变量

标签 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

应该打印两行,每行都应该有相同的值……但它们没有。第一个打印语句 [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/

相关文章:

Java 错误 : Could not find the main class

linux - 使用 makefile 进行编译的多个 SRCDIR 文件夹

linux - 用参数替换 bash 脚本中的部分命令

python - 在单行命令行中执行多行语句

regex - sed 匹配日期格式 2013 年 4 月 25 日

linux - 为什么sed的s命令后面可以跟一个逗号?

bash - 如何计算字符串第一行的字符数?

java - java程序中如何向shell脚本传递参数

php - INSERT INTO SQL Heredoc 正确语法

php - 是否可以在 heredoc 中使用 php 函数?