代码块重定向

象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,  #   并且将它保存到备份文件中.

 

转载于:https://www.cnblogs.com/fly-xiang-zhao/p/4018989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值