用于从文件读取并回显的 Bash 脚本

Tec*_*1an 2 macos bash shell

我将如何从文件中读入并回显每一行直到 EOF?

我已经尝试过这个:

FILE=/Users/<User>/Desktop/Names.txt

echo "################################"

while read p; do
        echo $p

done < $FILE
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,输出是这样的:

################################
{rtf1ansiansicpg1252cocoartf1265cocoasubrtf200
{fonttblf0fswissfcharset0 Helvetica;}
{colortbl;red255green255blue255;}
margl1440margr1440vieww10800viewh8400viewkind0
     pardtx720tx1440tx2160tx2880tx3600tx4320tx5040tx5760tx6480tx7200tx7920tx8640pardirnatural
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我该如何正确地做到这一点?

kon*_*box 5

请改用此表格:

while IFS= read -r p; do
    echo "$p"
done < "$file"
Run Code Online (Sandbox Code Playgroud)
  • 我们在实例上添加IFS=make unset ,这样就不会发生单词分割、分割或修剪空格。IFSread
  • -r防止反斜杠有意义。
  • 在周围引用变量""可以防止分词。

请参阅阅读分词

readarray另一种方法是使用或将行加载到数组中mapfile。这需要 Bash 4.0。请参阅地图文件

readarray -t lines < "$file"
printf '%s\n' "${lines[@]}"
Run Code Online (Sandbox Code Playgroud)