shell代码块重定向

代码块是由多条语句组成的一个整体,for、while、until循环或者if…else、case…in选择结构,或者由{ }包围起来的命令都可以称为代码块。

将重定向命令放在代码块的结尾处,就可以对代码块中的所有命令实施重定向。

举栗

  

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

  1. #!/bin/bash
  2. sum=0
  3. while read ndo
  4. ((sum += n))
  5. done <nums.txt #输入重定向
  6. echo "sum=$sum"

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

cat nums.txt

80 33 129 71 100 222 8

. ./test.sh

sum=643

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

  1. #!/bin/bash
  2. sum=0
  3. while read ndo
  4. ((sum += n))
  5. echo "this number: $n"
  6. done <nums.txt >log.txt #同时使用输入输出重定向
  7. echo "sum=$sum"

. ./test.sh sum=643

cat log.txt

this number: 80

this number: 33

this number: 129

this number: 71

this number: 100

this number: 222

this number: 8

{}包围的代码使用重定向。

  1. #!/bin/bash
  2. {
  3. echo "aa";
  4. echo "bb";
  5. echo "cc"
  6. >log.txt #输出重定向
  7. {
  8. read name;
  9. read url;
  10. read age
  11. <log.txt #输入重定向
  12. echo "$name已经$age岁了,它的网址是 $url"

. ./test.sh aa已经bb岁了,它的网址是cc cat log.txt aa

bb

cc



原文地址:https://www.cnblogs.com/ting152/p/12554468.html