I/0 重定向和循环

9.4.1. 输入重定向

除了测试命令的结果或者依赖于用户的输入来控制循环,你可以指定读取一个文件来控制循环。这样的情况下, read 经常是控制命令。只要输入行进入循环,循环命令就继续下去。一旦所有的行输入都被读取,循环就退出。

既然循环结构被认为是一个命令结构(比如 while TEST-COMMAND; do CONSEQUENT-COMMANDS; done),重定向应该在 done 语句之后出现,所以遵从这样的形式:

command < file

这种样子的重定向也可以在其它种类的循环中起作用。
9.4.2. 输出重定向

在下面的例子中,find 命令的输出被用作 read 命令的输入来控制一个 while 循环:

[carol@octarine ~/testdir] cat archiveoldstuff.sh
#!/bin/bash

# This script creates a subdirectory in the current directory, to which old
# files are moved.
# Might be something for cron (if slightly adapted) to execute weekly or
# monthly.

ARCHIVENR=`date +%Y%m%d`
DESTDIR="$PWD/archive-$ARCHIVENR"

mkdir $DESTDIR

find $PWD -type f -a -mtime +5 | while read file
do
gzip "$file"; mv "$file".gz "$DESTDIR"
echo "$file archived"
done

文件在被移入存档目录之前就先被压缩了。

 » 相关连接:
read取得用户输入 echo命令使用的转义序列 shell实现Unix进程间信息交换的几 sed与unix命令等价代码鉴赏
关于>&2、2>&1等重定向的详 Shell环境和变量生存期 SHELL正则表达式语法 SHELL编程基础
入门shell实例讲解 控制圈for 流程控制case 流程控制select
[回复] 输入重定向<
#!/bin/bash
i=0;
find / -name etc > file;

while read LINE
do
    DIRS=$LINE
    BACKUP="/tmp/backup${i}.tar.gz"
    tar -czvf  $BACUP $DIRS
    i=$(($i+1))
done < file

把file的内容逐行读入while循环

 » 相关连接:
read取得用户输入 echo命令使用的转义序列 shell实现Unix进程间信息交换的几 sed与unix命令等价代码鉴赏
关于>&2、2>&1等重定向的详 Shell环境和变量生存期 SHELL正则表达式语法 SHELL编程基础
入门shell实例讲解 控制圈for 流程控制case 流程控制select
[回复] 附加输入重定向<<
mail cnscn@cnscn.org << _content_
>  hello....
>  hello...
>_content_


把_content_到_content_之间的内容输入给命令mail

 » 相关连接:
read取得用户输入 echo命令使用的转义序列 shell实现Unix进程间信息交换的几 sed与unix命令等价代码鉴赏
关于>&2、2>&1等重定向的详 Shell环境和变量生存期 SHELL正则表达式语法 SHELL编程基础
入门shell实例讲解 控制圈for 流程控制case 流程控制select
[回复] 2>错误输出重定向
把错误输出重定向
cmd 2> error.txt

 » 相关连接:
read取得用户输入 echo命令使用的转义序列 shell实现Unix进程间信息交换的几 sed与unix命令等价代码鉴赏
关于>&2、2>&1等重定向的详 Shell环境和变量生存期 SHELL正则表达式语法 SHELL编程基础
入门shell实例讲解 控制圈for 流程控制case 流程控制select
[回复] 标准输出与错误重定向&>
cmd  &> log.txt 

等价于
cmd > log.txt  2>&1

 » 相关连接:
read取得用户输入 echo命令使用的转义序列 shell实现Unix进程间信息交换的几 sed与unix命令等价代码鉴赏
关于>&2、2>&1等重定向的详 Shell环境和变量生存期 SHELL正则表达式语法 SHELL编程基础
入门shell实例讲解 控制圈for 流程控制case 流程控制select
 » 本栏目最新帖:

Powered by PHPWind v6.0 Code © 2003-08