Shell :文件读取 只读取第一行后 莫名退出的问题

在使用Shell脚本从文件读取内容并进行多台服务器的SSH操作时,遇到脚本在读取第一行后退出的问题。通过分析,发现是由于`read`命令与其他SSH命令共用同一标准输入导致。解决方案是使用`exec 3<&FINDFILE`创建新的文件描述符,使得`read`从新描述符中读取内容,从而成功读取完整文件。
摘要由CSDN通过智能技术生成
 

Shell :文件读取 只读取第一行后 莫名退出的问题

这2天有个需求,就是到很多台服务器的日志上去查找某个字符串,所以我就写了个脚本:

#!/bin/bash

testNum=3

declare -a ips

ips[0]=10.22.16.202

ips[1]=10.12.16.203

ips[2]=10.22.16.204

if [ $# != 1 ]; then

   echo "please input find  file "

else

  FINDFILE=$1

fi

while read LINE

       echo $ LINE

         i=0

       while [ $i -lt $testNum ]

       do

        

        echo  ${ips[$i]}

        echo $ LINE

        ssh -oPort=20 ${ips[$i]} "cd /data/test/testPath;grep '$ LINE *.txt"

        ssh -oPort=20 ${ips[$i]} "cd /data2/test/testPath;grep '$ LINE *.txt"

       

           i=$(($i+1))

       done

done < $FINDFILE

 

由于是要查找很多字符串,所以我就把串放到了一个文件里面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以使用以下命令读取文件第一行: ``` head -n 1 文件名 ``` 其中,`head`命令用于显示文件的前几行,`-n`选项表示显示的行数,这里设置为1,即只显示第一行。`文件名`为要读取文件名。 ### 回答2: Shell 是一种命令行解释器,用于在 Unix 系统和类 Unix 系统中完成管理任务。在 Shell 中,可以使用各种命令来操作系统和文件。 要读取一个文件第一行,可以使用 Shell 命令 cat 和 head。cat 命令用于将整个文件打印到控制台,而 head 命令则用于打印一个文件的前几行。 要仅读取文件第一行,可以使用以下命令: head -n 1 filename 其中,文件名是要读取文件的名称。-n 1 参数指定只读取这个文件第一行。在运行此命令后,Shell 将只打印文件中的第一行到控制台上。 这个命令的输出结果可以进行处理。例如,可以通过管道将其输出到其他命令中进行处理或保存到变量中进行后续处理。 Shell 中还有其他命令可以读取文件第一行,例如 sed 和 awk。无论使用哪种命令,重要的是了解命令行的基本语法和参数选项以及如何组合命令以完成所需的任务。 ### 回答3: Shell是常用的命令行界面工具,可以用来执行各种操作,包括读取文件。要读取文件第一行,可以使用以下命令: ``` head -n 1 filename ``` 其中,head命令用于显示文件的前几行,-n选项用于指定要显示的行数,这里我们指定为1,表示只显示第一行filename是要读取文件名。 除了head命令,还可以使用sed命令来读取文件第一行: ``` sed -n '1p' filename ``` 其中,sed命令是一种文本处理工具,-n选项表示静默模式,不输出任何未经处理的文本,1p表示匹配第一行并将其打印出来。filename是要读取文件名。 此外,还可以使用awk命令来读取文件第一行: ``` awk 'NR==1{print}' filename ``` 其中,awk命令是一种文本处理工具,NR代表当前行号,如果当前行号等于1,即为第一行,则执行后面的print命令,将该行内容打印出来。filename是要读取文件名。 以上是读取文件第一行的三种方法,在实际使用中,我们可以根据具体情况选择合适的方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值