代码块重定向

象while, until, 和for循环代码块, 甚至if/then测试结构的代码块, 都可以对stdin进行重定向. 即使函数也可以使用这种重定向方式(请参考例子 23-11). 要想做到这些, 都要依靠代码块结尾的<操作符.

while循环的重定向
while [ "$name" != Smith ] # 为什么变量$name要用引号?
do
read name # 从$Filename文件中读取输入, 而不是在stdin中读取输入.
 echo $name
let "count += 1"
done <"$Filename" # 重定向stdin到文件$Filename.
重定向while循环的另一种形式
exec 3<&0 # 将stdin保存到文件描述符3.
exec 0<"$Filename" # 重定向标准输入.
count=0
while [ "$name" != Smith ]
do
read name # 从stdin(现在已经是$Filename了)中读取.
echo $name
let "count += 1"
done #  从文件$Filename中循环读取

重定向for循环
for name in `seq $line_count` # "seq"打印出数字序列.  # while [ "$name" != Smith ] --  比"while"循环更复杂--
do
read name # 从$Filename中, 而非从stdin中读取.
echo $name
if [ "$name" = Smith ] # 因为用for循环, 所以需要这个多余测试.
then
break
 fi
done <"$Filename"

重定向for循环(stdin和stdout都进行重定向)
for name in `seq $line_count`
 do
 read name
 echo "$name"
 if [ "$name" = "$FinalName" ]
 then
 break
 fi
 done < "$Filename" > "$Savefile" # 重定向stdin到文件$Filename,  #   并且将它保存到备份文件中.
时间: 2024-11-10 15:13:07

代码块重定向的相关文章

shell代码块重定向

代码块是由多条语句组成的一个整体,for.while.until循环或者if…else.case…in选择结构,或者由{ }包围起来的命令都可以称为代码块. 将重定向命令放在代码块的结尾处,就可以对代码块中的所有命令实施重定向. 举栗     使用 while 循环不断读取 nums.txt 中的数字,计算它们的总和. #!/bin/bash sum=0 while read n; do ((sum += n)) done <nums.txt #输入重定向 echo "sum=$sum&q

linux shell 代码块的重定向

代码块的重定向是指在代码块内将标准输入或标准输出重定向到文件,而在代码块外还是保留默认状态,换句话说,代码块重定向指对标准输入或者标准输出的重定向只在代码块内有效.可以重定向的代码块是while.until.for,也可以是if/then,甚至是函数. while重定向 #!/bin/bash ls /etc> logs while [ "$filename" != "rc.d" ] do read filename let "count=count

修饰符-包-内部类-代码块执行顺序

1.访问权限修饰符     从大到小的顺序为:public--protected--default--private     private--只能在同一类中使用;     default--不用写出来,默认不加.可以被同一包中的类使用     protected--可以被不同包的子类使用     public--可以被不同包的其它类使用 2.各种修饰符的修饰对象(可修饰哪些:类/接口/方法/属性)(多个修饰符连用是可以没有顺序的!)     1)访问权限修饰符:public/default--

iOS学习之代码块(Block)

代码块(Block) (1)主要作用:将一段代码保存起来,在需要的地方调用即可. (2)全局变量在代码块中的使用: 全局变量可以在代码块中使用,同时也可以被改变,代码片段如下: 1 int local = 1;//注意:全局变量 2 void (^block0)(void) = ^(void){ 3 local ++; 4 NSLog(@"local = %d",local); 5 }; 6 block0(); 7 NSLog(@"外部 local = %d",lo

[Java基础]代码块

1. 2.构造代码块 public class CBlock { public CBlock()//构造函数 { i=300;//构造函数中初始化 } public int i=100;//显示初始化变量 {//构造代码块 i=200;//构造代码块中初始化变量 } } 从以下几点理解以上代码: java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端. 成员变量的初始化工作其实都在在构造函数中执行的. 一旦经过java编译器编译后,那么构造代码块的代码块就会被移动

Java(静态)变量和(静态)代码块的执行顺序

本文讨论Java中(静态)变量.(静态)代码块的执行顺序 首先创建3个类: 1.Foo类,用于打印变量 public class Foo { public Foo(String word) { System.out.println(word); } } 2.Parent类 public class Parent { static Foo FOO = new Foo("Parent's static parameter"); Foo foo = new Foo("Parent'

Java中的4种代码块

一.普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下: public class CodeDemo01{ public static void main(String[] args){ //普通代码块 { int x = 10; System.out.println("x=" + x); } int x = 100; System.out.println("x=" + x); } } 二.构造代码块 直接在类中定义的没有加static关键字的代码

java学习教程之代码块

学编程吧java学习教程之代码块发布了,欢迎通过xuebiancheng8.com来访问 java中的代码块包括下面几种: 1.普通代码块 2.构造代码块 3.静态代码块 1.普通代码块很简单看下面这个例子: public class Test{ public static void main(String args[]){ { //此处就是普通代码块,普通代码块中的代码按顺序执行 System.out.println("hello"); } } } 2.构造代码块 public cl

vscode自定义代码块

vscode中设置自定义代码块打开首选项,选择用户代码片段,打开后选择编程语言选中后打开文件,按照格式编辑内容 "Print to console log": { "prefix": "csl", "body": [ "console.log('$1')" ], "description": "log output to console" },