循环不循环
Loop is not looping
我正在使用以下脚本遍历服务器列表,然后输出空闲磁盘 space 信息。 SSH 密钥已经到位并且可以使用。
但它只输出第一个服务器名称,然后是现有的...我很困惑。
#!/bin/bash
PATH=/bin:/usr/bin:/usr/sbin
export PATH
while IFS='|' read hostname nickname; do
echo "$hostname: $nickname"
ssh $hostname "df -Pkhl"
done < server-list.dat
以及列表:
% cat server-list.dat
serverone|ONE
servertwo|TWO
serverthree|THREE
发生这种情况是因为您将标准输入附加到 server-list.dat
,但 ssh
还希望从标准输入读取。
要解决此问题,您可以使用不同的描述符打开文件:
while IFS='|' read -u 3 hostname nickname; do
echo "$hostname: $nickname"
ssh $hostname "df -Pkhl"
done 3< server-list.dat
使用 -u 3
和 3<
打开 server-list.dat
作为文件描述符 3。
我正在使用以下脚本遍历服务器列表,然后输出空闲磁盘 space 信息。 SSH 密钥已经到位并且可以使用。
但它只输出第一个服务器名称,然后是现有的...我很困惑。
#!/bin/bash
PATH=/bin:/usr/bin:/usr/sbin
export PATH
while IFS='|' read hostname nickname; do
echo "$hostname: $nickname"
ssh $hostname "df -Pkhl"
done < server-list.dat
以及列表:
% cat server-list.dat
serverone|ONE
servertwo|TWO
serverthree|THREE
发生这种情况是因为您将标准输入附加到 server-list.dat
,但 ssh
还希望从标准输入读取。
要解决此问题,您可以使用不同的描述符打开文件:
while IFS='|' read -u 3 hostname nickname; do
echo "$hostname: $nickname"
ssh $hostname "df -Pkhl"
done 3< server-list.dat
使用 -u 3
和 3<
打开 server-list.dat
作为文件描述符 3。