自己写的一个获取所有远程服务器数据库启动配置信息的bash 脚本,发现循环里的ssh远程命令只能执行一次,感觉很奇怪,以前没这么使用过,

我的脚本为

#!/bin/bash
## generate a separated line
for i in `seq 0 80`dovv+="#"done
#echo $vv;exit
##
cat myhost.txt|while read host
do
echo -e "$host\n"
ssh -q -n brucetam@$host "/sbin/chkconfig --list|grep -E \"mysql|mongo\""
#echo -e "###############\n"echo -e "$vv\n"
done

网上查询资料如下为参考资料,转载过来当做笔记

以前写过一个批量ssh的脚本,来批量处理一些东西,不过遇到过一个问题就是while循环只执行一次就退出。

现在又有人问到,就顺便记录一下,测试脚本如下

while read line ;

do

ssh  -p20002 $line  -o StrictHostKeyChecking=no xxxxxxxxx

done < ip.txt

其中ip.txt里是需要修改东东的ip列表,每次执行都只执行一次很”奇葩“。以前也不明白后来一个sys哥们他告诉我使用-n可以解决。

不过他说不清为啥,后来自己 man ssh 发现 -n有如下解释:

-n      Redirects stdin from /dev/null (actually, prevents reading from stdin).  This must be used when ssh is
             run in the background.

具体意思是说, -n 使得ssh 使的标准输入重定向为/dev/null,否则的话ssh会读取标准输入(但是对ssh来说,读取标准输入的内容并没有什么用处)

结合-n 参数解释刚刚说的while 执行一次的问题:

while 第一次从标准输入读取ip.txt 一行开始执行循环 然后执行到ssh ,这个时候ssh 会读取标准输入的所有内容但没任何作用,执行完后依然执行while

循环,这个时候while read line 想读取标准输入的内容,发现已经没有任何内容,故退出这就是我们看到的while只读取一次的原因。

ps:上述分析纯属个人理解,如有误导,实属巧合。

本文转自http://blog.csdn.net/lidan3959/article/details/20452717

转载于:https://blog.51cto.com/brucetam/1643791

shell 脚本中while 循环只执行一次的问题相关推荐

  1. 【Linux】Shell脚本中的多任务并发执行

    Shell脚本中的多任务并发执行 需求 实现一个脚本能够使用ping检测网络的连通性 可以同时检测多个IP地址, 并且将检测结果输出 分析 正常情况下,Shell脚本中的命令是串行执行的,当一条命令执 ...

  2. Shell脚本中的循环

    循环语句: Bash Shell中主要提供了三种循环方式:for.while和until. 一.for循环 for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区 ...

  3. shell脚本中for循环及while循环写法

    for循环 例1 **展示上面的数组 #!/bin/bash #脚本名称为222.sh name1="nihao1" name2="nihao2" name3= ...

  4. 在 Shell 脚本中跟踪调试命令的执行

    文章目录 shell 脚本调试系列 概述 shell 跟踪执行的重要性 shell 脚本调试系列 本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的 ...

  5. Shell脚本中循环until命令用法笔记

    在shell脚本中,可以使用until执行循环处理,如果使用until命令的话如果表达式的结果为false时才执行循环体,直到测试表达式的值为true的时候才会 停止循环. 语法结果如下: until ...

  6. shell脚本for循环_了解Shell脚本中的for循环

    shell脚本for循环 Continuing on from our previous tutorials, let's understand the for loop in shell scrip ...

  7. shell脚本中判断上一条python命令执行情况

    shell脚本中判断python命令执行结果 python脚本main.py import sys def main():try:"执行相关操作"sys.exit(0)except ...

  8. Shell脚本中获取命令运行结果、特殊变量使用、条件判断等常用操作

    文章目录 前言 获取命令执行结果 使用反引号 `` ` ``command `` ` ``来执行命令 使用括号组合 $(command) 来执行命令 两种方式的区别 特殊变量使用 $0 $1 $2 . ...

  9. 如何在 Shell 脚本中执行语法检查调试模式

    我们开启了 Shell 脚本调试系列文章,先是解释了不同的调试选项,下面介绍如何启用shell调试模式. 写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作. ...

最新文章

  1. Vue API(directives) 自定义指令
  2. oracle left join优化
  3. DBGrid 应用全书(一)
  4. C语言 (条件编译#ifdef、#ifndef) (#if 常量,#if 1,#if 0)的用法
  5. python怎么把所有标点符号置空_Python从小白到攻城狮(1)——python环境搭建
  6. python并行for循环_Python并行执行for循环
  7. PHP 织梦 帝国那个好,帝国、PHPCMS及织梦对比(十):推荐位功能
  8. 会计专业领域计算机应用系统,信息技术在会计专业领域中的应用
  9. Linux下安装Nginx完整教程及常见错误解决方案
  10. 外包如何安排人手-b
  11. 05Oracle P6培训系列:05创建项目
  12. 差分进化算法_差分进化算法入门及实例应用
  13. oracle 客户端安装包下载地址,Oracle客户端安装及下载地址
  14. 服务器远程关机软件,实现远程关机需要哪些步骤?向日葵怎么实现远程关机控制?...
  15. 计算机flash拉开效果,使用Flash制作卷轴展开效果
  16. 2db多少功率_db换算(db和功率的换算)
  17. win10触控平板 如何禁掉IE10的手势控制
  18. 让32位Eclipse和64位Eclipse同时在64的Windows7上运行
  19. 【生活】如何线上办理持有广州社保人员的异地分娩医保登记 - 定点医院 - 异地就医报销相关
  20. java模拟网易邮箱登录_java实现163邮箱发送邮件到qq邮箱成功案例

热门文章

  1. 【题解】Luogu P1011 车站
  2. 使用python+ffmpeg批量转换格式
  3. NYOJ题目611练练
  4. Gym 100507G The Debut Album (滚动数组dp)
  5. 2.6.24及以上版本内核裁剪后启动黑屏的解决办法
  6. MFC笔记2(控件位置调整)
  7. win32汇编指令汇总
  8. window 之命令行的cd
  9. mysql5.7.12 my.ini文件_MySQL5.7缺少my.ini文件的解决方法
  10. python一到10整数的平方和_零基础学python_10_列表(创建数值列表 )