For 循环不打印所需结果

For 循环不打印所需结果

我正在尝试在我的脚本中使用 for 循环。

我已通过 ssh 进入服务器并移至相应目录。目录中有多个文件。

我想循环遍历每个文件。

文件以特定名称 ff 开头

ssh -q [email protected]  << EOF
cd /var/dist/s-test/
NAME=ff
echo ${NAME}*   // this is working

for a in ${NAME}*;  // this is not working
do
echo  $a
done

EOF

答案1

代替:

ssh -q [email protected]  << EOF

和:

ssh -q [email protected]  <<'EOF'

这可以防止客户端的 shell 扩展此处的文档。脚本仍将在服务器端扩展。

文档

man bash

here-documents 的格式为:

          [n]<<[-]word
                  here-document
          delimiter

不对 word 进行参数和变量扩展、命令替换、算术扩展或路径名扩展。如果 word 的任何部分被引用,则分隔符是 word 上引用删除的结果,并且不会扩展此处文档中的行。 如果 word 未加引号,则此处文档的所有行都将进行参数扩展、命令替换和算术扩展,字符序列 \<newline> 将被忽略,并且必须使用 \ 来引用字符 \、$ 和 `。[强调添加]

相关内容