Bash读取文件

Bash读取文件

在Bash Shell脚本中,可以使用多种方法来读取文件。下面给出了一些重要的方法(假设读取的文件名为:read_file.txt)。

假设文件:read_file.txt的内容如下:

Welcome
Visit
Our
Site
-
zyiz.net

方法1. 使用 cat fileName 读取文件

可以使用以下语法将文件内容打印到终端。语法:

value=`cat file_name`

示例代码:

#!/bin/bash  

value=`cat read_file.txt`  
echo "$value"

执行上面示例代码,得到以下结果:

方法2. 使用 $(fileName) 读取文件

以下是使用$读取文件内容的语法:

value=$(file_name)

示例代码:

#!/bin/bash  

value=$(<read_file.txt)  
echo "$value"

执行上面示例代码,得到以下结果:

maxsu@zyiz:~/bashcode$ cat /dev/null > readfile.sh 
maxsu@zyiz:~/bashcode$ vi readfile.sh 
maxsu@zyiz:~/bashcode$ ./readfile.sh 
Welcome
Visist
Our
Site
-
zyiz.net

方法3. 从命令行读取文件内容

如果想从命令行逐行读取文件而不使用cat命令,则可以运行以下命令来执行任务:

命令

while read line; do Command; done < input.file

示例代码:

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

执行上面示例代码,得到以下结果:

在这里,while循环将到达文件的每一行,并将该行的内容存储在$line变量中,变量将在以后打印。

方法4. 使用脚本读取文件内容

要使用脚本读取文件内容,需要创建一个bash文件并添加以下代码:

Bash脚本

#!/bin/bash  

file='read_file.txt'  

i=1  
while read line; do  

#Reading each line  
echo "Line No. $i : $line"  
i=$((i+1))  
done < $file

在这里,文件名存储在$file变量中,而$i变量用于保留行号的值。

执行上面示例代码,得到以下结果:
使用脚本读取文件内容

方法5. 从命令行传递文件名并读取文件

创建一个bash并添加以下脚本,该脚本将从命令行传递文件名并逐行读取文件。第一个参数值由变量$1读取,该变量将包含要读取的文件名。如果文件在指定位置可用,则while循环将逐行读取文件并打印文件内容。

Bash脚本

#!/bin/bash  

file=$1  
while read line; do  

#Readind each line in sequence  
echo $line  
done <read_file.txt

执行上面示例代码,得到以下结果:

maxsu@zyiz:~/bashcode$ cat /dev/null > readfile.sh
maxsu@zyiz:~/bashcode$ vi readfile.sh 
maxsu@zyiz:~/bashcode$ ./readfile.sh 
Welcome
Visit
Our
Site
-
zyiz.net

在此,文件名用作参数值。输出是文件:read_file.txt中的内容,单词之间没有多余的空格。

方法6. 通过省略反斜杠转义来读取文件

如果想通过省略反斜杠转义来逐行读取文件的每一行,那么需要在while循环中使用-r选项和read命令,参考以下代码:

#!/bin/bash  

while read -r line; do  

#Reading each line by omitting backslash escape  
echo $line  
done < read_file.txt

执行上面示例代码,得到以下结果:

maxsu@zyiz:~/bashcode$ cat /dev/null > readfile.sh
maxsu@zyiz:~/bashcode$ vi readfile.sh 
maxsu@zyiz:~/bashcode$ ./readfile.sh 
Welcome
Visit
Our
Site
-
zyiz.net

可能出于多种编程目的需要读取文件。例如,逐行搜索匹配文件中的任何特定内容。因此,对于任何编程语言而言,这都是一项非常常见而又十分有用的任务。