【发布时间】:2019-09-29 16:34:01
【问题描述】:
下面的脚本将在第一个 ssh 命令时中断。没有出错,而是打破了while循环。使用set -vx 调试脚本将表明read -r line 不会从被迭代的变量中读取任何其他内容。
一旦我注释掉 ssh 行,它就会正常工作并遍历整个循环。
你能帮忙解开这里的谜吗?
谢谢!
脚本:
#!/bin/bash
set -vx
file_list=$(cat <<EOT
aaa
bbbb
ccccc
dddddd
eeeeeee
EOT
)
while read -r line; do
echo ${line}
ssh 192.168.100.222 touch /tmp/${line}
done <<< "${file_list}"
带有 ssh 行注释的输出(set -vx 被忽略)
aaa
bbbb
ccccc
dddddd
eeeeeee
启用 ssh 线路的输出
aaa
【问题讨论】:
-
我还将 ssh 行更改为下面的行,它显示它正在执行,但 while 仍然中断:
ssh 192.168.100.222 echo "1"