为什么 shell 脚本中空格被算作换行符?

为什么 shell 脚本中空格被算作换行符?

我写了以下脚本。我想读取一个文件并逐行打印,但它将空间视为新行。这是为什么?

#!/bin/bash
for i in `cat data.txt`
do
echo $i
done

输入:保存在文件名中数据.txt

B  FM_Server10_grp GPCBIOEMM10          Y          N               ONLINE

输出:

B
FM_Server10_grp
PCBIOEMM10
Y
N
ONLINE

另一个问题:如何仅提取数字值,例如10from GPCBIOEMM10

答案1

for i in ...默认情况下,循环遍历以空格分隔的标记列表,而不是以换行符分隔的标记列表。空格和换行符都是空白字符,因此被视为分隔符。

考虑:

while read line; do
    echo $line
done < data.txt

默认情况下,read 将读取直到换行符并将读取的内容存储在给定变量中。

相关内容