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

Mon*_*jit 0 bash shell

我正在使用下面的代码

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

done
Run Code Online (Sandbox Code Playgroud)

server.txt包含:

     server1.com
     server2.com

     server3.com


     server4.com
Run Code Online (Sandbox Code Playgroud)

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

     server1.com
     server2.com
     server3.com
     server4.com
Run Code Online (Sandbox Code Playgroud)

即它没有考虑空行.我怎么能解决这个问题呢?

gle*_*man 5

while read host; do echo "$host"; done < server.txt
Run Code Online (Sandbox Code Playgroud)

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