Shell代码块重定向

代码块是由多条语句组成的一个整体,for、while、until循环或者if…else、case…in选择结构,或者由{ }包围起来的命令都可以称为代码块。将重定向命令放在代码块的结尾处,就可以对代码块中的所有命令实施重定向。

【示例1】统计文档中有多少行文字

使用 while 循环不断读取 nums.txt 中的数字,计算它们的总和。

#!/bin/bash
sum=0
while read n; do
((sum += n))
done <nums.txt #输入重定向
echo "sum=$sum"

将代码保存到 test.sh 并运行:

cat nums.txt

80 33 129 71 100 222 8

. ./test.sh

sum=643

【示例2】记录 while 的读取过程,并将输出结果重定向到 log.txt 文件

#!/bin/bash
sum=0
while read n; do
((sum += n))
echo "this number: $n"
done <nums.txt >log.txt #同时使用输入输出重定向
echo "sum=$sum"

【示例3】对{}包围的代码使用重定向

#!/bin/bash
{
echo "aa";
echo "bb";
echo "cc"
} >log.txt #输出重定向
{
read name;
read url;
read age
} <log.txt #输入重定向
echo "$name已经$age岁了,它的网址是 $url"
原文地址:https://www.cnblogs.com/johnvwan/p/15606783.html