- Linux 管理員教程
- 主頁
- CentOS 概述
- CentOS Linux 基本命令
- 檔案/資料夾管理
- 使用者管理
- 配額管理
- systemd 服務的啟動和停止
- 使用 systemctl 進行資源管理
- 使用 cgroups 進行資源管理
- 程序管理
- 防火牆設定
- 在 CentOS Linux 中配置 PHP
- 在 CentOS Linux 中設定 Python
- 在 CentOS Linux 中配置 Ruby
- 在 CentOS Linux 中設定 Perl
- 安裝和配置 Open LDAP
- 建立 SSL 證書
- 在 CentOS 7 中安裝 Apache Web 伺服器
- 在 CentOS 7 上設定 MySQL
- 設定 Postfix MTA 和 IMAP/POP3
- 安裝匿名 FTP
- 遠端管理
- 在 CentOS 中的流量監控
- 日誌管理
- 備份和恢復
- 系統更新
- Shell 指令碼
- 軟體包管理
- 卷管理
- Linux 管理員實用資源
- Linux 管理員 - 快速指南
- Linux 管理員 - 實用資源
- Linux 管理員 - 討論
Linux 管理員 - 讀取和寫入檔案
在 BASH 中讀取和寫入檔案可以使用輸入和輸出重定向器來完成。我們在之前的指令碼中已經瞭解了這一點。
#!/bin/bash
myFile = "myLines.txt"
while read -a FILENAME;
do
if [ `echo $FILENAME | grep 004` ];
then
echo "line was $FILENAME" >> LineFile.txt
break
fi
echo $FILENAME
done < $myFile
現在將條件分支回顯到檔案 **LineFile.txt**,而不是回顯到終端。
已經以兩種方式介紹了從檔案讀取,即 cat 和 read。**read** 通常總是被認為是最佳實踐。雖然 **cat** 僅僅從檔案中傳遞文字流。**read** 暗示指令碼正在讀取實際檔案,並對讀取檔案負責。
下面的指令碼再次讀取文字檔案,將每一行放入一個數組,然後將陣列列印到終端。
#!/bin/bash
myFile = "myLines.txt"
line = ()
while read -r FILELINE;
do
line+=($FILELINE)
done < $myFile
for i in `seq 0 ${#line[@]}`;
do
echo $i " -> " ${line[$i]}
done
下面是輸出。
0 -> line001 1 -> line002 2 -> line003 3 -> line004 4 -> line005 5 -> line006 6 -> line007 7 -> line008 8 -> line009 9 -> line010
linux_admin_shell_scripting.htm
廣告