为什么空行没有存储在变量中

时间:2012-03-29 19:18:02

标签: bash shell

我正在使用以下代码

    #! /bin/bash
for host in $(cat ./server.txt)
do 
    echo "$host"

done

server.txt包含:

     server1.com
     server2.com

     server3.com


     server4.com

但是上面的代码给出了以下输出:

     server1.com
     server2.com
     server3.com
     server4.com

即没有考虑空行。我该如何解决?

3 个答案:

答案 0 :(得分:5)

while read host; do echo "$host"; done < server.txt

使用您提供的代码,将文件作为单个字符串作为for命令的第4个参数。然后shell使用任意空格作为分隔符来分割字符串(假设您没有更改IFS变量)。

答案 1 :(得分:1)

空行不存在,因为它们被认为是用于分隔单词值的空格。

使用它:

awk'{print $ 1}'server.txt

 server1.com
 server2.com

 server3.com


 server4.com

答案 2 :(得分:0)

替代

s=$(cat -E ./server.txt) 
while [ ${#s} != 0 ]
 do
  echo ${s%%\$*}
  s=${s#*\$}
 done