linux shell脚本用while read逐行读取文本的问题
2016-11-16 11:25
176 查看
转自:https://zhidao.baidu.com/question/432126157616850964.html
问题:
我现在是想用一个脚本获取一定列表服务器的运行时间。首先我建立一个名字为ip.txt的IP列表(一个IP一行),再建好密钥实现不用密码直接登录。然后写脚本如下:
#!/bin/bash
while read ips;
do
echo $ips;
done < ip.txt
脚本实现了逐行读取列表中的IP,但是:
#!/bin/bash
while read ips;
do
echo $ips;
upt=`ssh root@$ips "uptime"`;
echo $upt;
done < ip.txt
脚本实现了一个IP的检测,就直接跳出来了。大神,求救!!!
大神解答:
问题:
我现在是想用一个脚本获取一定列表服务器的运行时间。首先我建立一个名字为ip.txt的IP列表(一个IP一行),再建好密钥实现不用密码直接登录。然后写脚本如下:
#!/bin/bash
while read ips;
do
echo $ips;
done < ip.txt
脚本实现了逐行读取列表中的IP,但是:
#!/bin/bash
while read ips;
do
echo $ips;
upt=`ssh root@$ips "uptime"`;
echo $upt;
done < ip.txt
脚本实现了一个IP的检测,就直接跳出来了。大神,求救!!!
大神解答:
1、while使用机制,ip.txt文件中的信息都已经读入并给了整个while语句。所以当我们在while循环中再一次调用read语句,就会读取到下一条记录。问题就出在这里,ssh语句正好回读取输入中的所有东西。为了禁止ssh读所有东西增加一个< //null,将ssh 的输入输入 while read ips; do echo $ips; upt=`ssh root@${ip1} uptime < //null;`; echo $upt; done < ip.txt; 2、用for for ips in `cat ip.txt`; do echo ${ips}; upt=`ssh root@${ips} uptime`; echo $upt; done
高手啊,讲解得非常透彻非常专业。我还想问你个问题: 1、为什么用</dev/null重定向就可以禁止ssh读取所有东西呢?/dev/null是不是把远程的值重置为空呢?这个问题有点抽象。 2、兄弟提到for语句,也写得很精辟。for语句怎么不存在while语句刚才的那个问题? 3、刚才楼上有个兄弟提到用-n参数,我试过也是可以的,你可以帮他回答一下为什么这个-n也可以的吗?追答
1、< /dev/null是告诉ssh如果要获取就从/dev/null获取,避免了获取while缓存 2、for没有一次把文件内容缓存获取过来 3、看一下man ssh -n参数 Redirects stdin from /dev/null (actually, prevents reading from stdin).和</dev/null道理一样。
相关文章推荐
- Linux shell脚本中执行命令结果赋值给变量&&echo输出变量是否包含换行符的问题
- linux shell 脚本问题 ${PAGER:-more}
- Linux Shell脚本的10个有用的“面试问题和解答”
- Linux Shell脚本中字符串比较表达式问题
- sh脚本异常 win-linux 文本格式问题
- Linux Shell脚本攻略笔记4之让文本飞
- Linux Shell脚本的10个有用的“面试问题和解答”
- 无法导入reg:指定的文件不是注册脚本——兼了解文本格式问题
- linux shell脚本自动检测apache服务是否正常的诡异问题
- sh脚本异常 win-linux 文本格式问题
- linux Shell脚本学习汇集的问题
- Linux shell脚本中复制特殊字符问题
- Linux Shell 脚本在处理字符文本方面的用法之一(原创)
- Linux Shell脚本的10个有用的“面试问题和解答”
- 无法导入reg:指定的文件不是注册脚本——兼了解文本格式问题
- linux shell脚本如何将文本内容按空格分行、如何使用timit原始corpus制作wav的scp文件
- Button的onclick里有javascript脚本时提示字符文本中的字符太多的问题
- python脚本处理文本时遇到的字符问题:UnicodeDecodeError: " " codec can't decode byte
- 有关Linux Shell脚本的10个常见面试问题与解答
- Linux Shell脚本的10个有用的“面试问题和解答”