在Bash Shell腳本中,可以使用多種方法來讀取檔。下麵給出了一些重要的方法(假設讀取的檔案名為:read_file.txt
)。
假設檔:read_file.txt的內容如下:
Welcome
Visit
Our
Site
-
xuhuhu.com
方法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@zaixian:~/bashcode$ cat /dev/null > readfile.sh
maxsu@zaixian:~/bashcode$ vi readfile.sh
maxsu@zaixian:~/bashcode$ ./readfile.sh
Welcome
Visist
Our
Site
-
xuhuhu.com
方法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@zaixian:~/bashcode$ cat /dev/null > readfile.sh
maxsu@zaixian:~/bashcode$ vi readfile.sh
maxsu@zaixian:~/bashcode$ ./readfile.sh
Welcome
Visit
Our
Site
-
xuhuhu.com
在此,檔案名用作參數值。輸出是檔: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@zaixian:~/bashcode$ cat /dev/null > readfile.sh
maxsu@zaixian:~/bashcode$ vi readfile.sh
maxsu@zaixian:~/bashcode$ ./readfile.sh
Welcome
Visit
Our
Site
-
xuhuhu.com
可能出於多種編程目的需要讀取檔。例如,逐行搜索匹配檔中的任何特定內容。因此,對於任何編程語言而言,這都是一項非常常見而又十分有用的任務。