百度企业网站建设费用,微网站是什么意思,购物商城网站设计方案,wordpress架设系统循环中的重定向或许你应该在其他脚本中见过下面的这种写法#xff1a;while read linedo…done file刚开始看到这种结构时#xff0c;很难理解 file是如何与循环配合在一起工作的。因为循环内有很多条命令#xff0c;而我们之前接触的重定向都是为一条命令工作的。… 循环中的重定向 或许你应该在其他脚本中见过下面的这种写法 while read line do … done file 刚开始看到这种结构时很难理解 file是如何与循环配合在一起工作的。因为循环内有很多条命令而我们之前接触的重定向都是为一条命令工作的。这里有一个原则这个原则掌握好了这个问题就很简单了 对循环重定向的输入可适用于循环中的所有需要从标准输入读取数据的命令 对循环重定向的输出可适用于循环中的所有需要向标准输出写入数据的命令 当在循环内部显式地使用输入或输出重定向内部重定向覆盖外部重定向。 上面的while结构中read命令是需要从标准输入中读取数据的。我们来详细了解一下read命令的用法吧这个命令是shell脚本中使用频率最高的命令之一。 read 先来看一下read的命令语法 read arg1 arg2 arg3 arg4 … read是一个用来赋值的命令它需要从标准输入获得值然后把这些值按位置依次赋值给变量arg1、arg2、arg3、arg4…输入的时候以空格作为字段分隔符。 read的一个最大特性是可以在脚本中产生交互因为它从标准输入读取数据。read之所以很常用一是因为我们经常需要赋值二是因为它可以交互三是read能够一次给多个变量赋值。 $ read host ip name linux 10.0.0.1 licong $ echo $host $ip $name linux 10.0.0.1 licong $ 可以看到linux、10.0.0.1、licong分别被赋值给了变量host、ip和name。再看 $ read host ip linux 10.0.0.1 licong $ echo $host linux $ echo $ip 10.0.0.1 licong $ 当我们输入的字段比变量数目多时最后一个变量的值将不只一个字段而是所有剩余的内容当输入字段比变量数少时多余的变量将是空值你可以自己试试。现在我们再来看 while read line do … done file read通过输入重定向把file的第一行所有的内容赋值给变量line循环体内的命令一般包含对变量line的处理然后循环处理file的第二行、第三行。。。一直到file的最后一行。还记得while根据其后的命令退出状态来判断是否执行循环体吗是的read命令也有退出状态当它从文件file中读到内容时退出状态为0循环继续惊醒当read从文件中读完最后一行后下次便没有内容可读了此时read的退出状态为非0所以循环才会退出。 另一种也很常见的用法 command | while read line do … done 如果你还记得管道的用法这个结构应该不难理解吧。command命令的输出作为read循环的输入这种结构长用于处理超过一行的输出当然awk也很擅长做这种事。 APP_FILE./aabb这个是多行文件 cat $APP_FILE|while read line do ssh -q $line ls /home/admin done fail: 只执行了一次就退出了循环 这里的问题是所有的内容都一起读取出来写到缓存里面了让SSH重定向出去了 注意 1. ssh命令在每次执行时会读取所有的标准输入中的内容。 cat file |ssh 1.1.1.1 cat 会读取所有文件的内容 2. 对于while循环当按照如下方式使用时 cat file while read line 这里使用重定向将文件内容输入到while命令while命令每次使用read从输入中读取一行数据。 问题就在这里如果在while循环中调用了ssh命令那么ssh就会把当前输入中所有的数据读走也就是cat file重定向给while命令的数据都被ssh命令读走了以至于下次循环的时候read读到的内容为空导致循环提前结束。 解决这个问题两种方式 1. ssh n 使用n参数 2. ssh xxxx /dev/null重定向shell命令的输入 主要参数说明 -l 指定登入用户 -p 设置端口号 -f 后台运行并推荐加上 -n 参数 -n 将标准输入重定向到 /dev/null防止读取标准输入 -N 不执行远程命令只做端口转发 -q 安静模式忽略一切对话和错误提示 -T 禁用伪终端配置 参考文章 http://blog.163.com/clevertanglei900126/blog/static/11135225920118742327322/ 转载于:https://www.cnblogs.com/centos-python/articles/8776217.html