我正在尝试在我的脚本中使用 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> 将被忽略,并且必须使用 \ 来引用字符 \、$ 和 `。[强调添加]