在Bash Shell指令碼中,可以使用多種方法來讀取檔案。下面給出了一些重要的方法(假設讀取的檔案名為:read_file.txt
)。
假設檔案:read_file.txt的內容如下:
Welcome
Visit
Our
Site
-
Tw511.com
可以使用以下語法將檔案內容列印到終端。語法:
value=`cat file_name`
範例程式碼:
#!/bin/bash
value=`cat read_file.txt`
echo "$value"
執行上面範例程式碼,得到以下結果:
以下是使用$
讀取檔案內容的語法:
value=$(file_name)
範例程式碼:
#!/bin/bash
value=$(<read_file.txt)
echo "$value"
執行上面範例程式碼,得到以下結果:
maxsu@yiibai:~/bashcode$ cat /dev/null > readfile.sh
maxsu@yiibai:~/bashcode$ vi readfile.sh
maxsu@yiibai:~/bashcode$ ./readfile.sh
Welcome
Visist
Our
Site
-
Tw511.com
如果想從命令列逐行讀取檔案而不使用cat
命令,則可以執行以下命令來執行任務:
命令
while read line; do Command; done < input.file
範例程式碼:
while read line; do echo $line; done < read_file.txt
執行上面範例程式碼,得到以下結果:
在這裡,while
迴圈將到達檔案的每一行,並將該行的內容儲存在$line
變數中,變數將在以後列印。
要使用指令碼讀取檔案內容,需要建立一個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
變數用於保留行號的值。
執行上面範例程式碼,得到以下結果:
建立一個bash並新增以下指令碼,該指令碼將從命令列傳遞檔案名並逐行讀取檔案。第一個引數值由變數$1
讀取,該變數將包含要讀取的檔案名。如果檔案在指定位置可用,則while
迴圈將逐行讀取檔案並列印檔案內容。
Bash指令碼
#!/bin/bash
file=$1
while read line; do
#Readind each line in sequence
echo $line
done <read_file.txt
執行上面範例程式碼,得到以下結果:
maxsu@yiibai:~/bashcode$ cat /dev/null > readfile.sh
maxsu@yiibai:~/bashcode$ vi readfile.sh
maxsu@yiibai:~/bashcode$ ./readfile.sh
Welcome
Visit
Our
Site
-
Tw511.com
在此,檔案名用作引數值。輸出是檔案:read_file.txt
中的內容,單詞之間沒有多餘的空格。
如果想通過省略反斜槓跳脫來逐行讀取檔案的每一行,那麼需要在while
迴圈中使用-r
選項和read
命令,參考以下程式碼:
#!/bin/bash
while read -r line; do
#Reading each line by omitting backslash escape
echo $line
done < read_file.txt
執行上面範例程式碼,得到以下結果:
maxsu@yiibai:~/bashcode$ cat /dev/null > readfile.sh
maxsu@yiibai:~/bashcode$ vi readfile.sh
maxsu@yiibai:~/bashcode$ ./readfile.sh
Welcome
Visit
Our
Site
-
Tw511.com
可能出於多種程式設計目的需要讀取檔案。例如,逐行搜尋匹配檔案中的任何特定內容。因此,對於任何程式設計語言而言,這都是一項非常常見而又十分有用的任務。