- 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
广告