http://www.gnu.org/software/bash/manual/bashref.html#Redirections

http://www.cnblogs.com/weidagang2046/p/io-redirection.html 原理与实现

http://blog.csdn.net/taiyang1987912/article/details/39401265

[root@server1 tmp]# cd /dev/fd
[root@server1 fd]# ll
总用量 0
lrwx------ 1 root root 64 6月 4 12:17 0 -> /dev/pts/0
lrwx------ 1 root root 64 6月 4 12:17 1 -> /dev/pts/0
lrwx------ 1 root root 64 6月 4 12:17 2 -> /dev/pts/0
lrwx------ 1 root root 64 6月 4 12:17 255 -> /dev/pts/0

#使用exec将stdin重定向到文件
#!/bin/bashexec 8<&0           #FD 8是FD 0的副本,用于恢复标准输入
exec < file         #将标准输入重定向到file
read a              #读取file的第一行
read b              #读取file的第二行
echo "read has read $$"
echo "read has read $PPID"
sleep 100
echo "----------------"
echo $a             #标准输出
echo $b             #标准输出

该进程的文件描述符FD 变为如下

[root@server1 fd]# ll
总用量 0
lr-x------ 1 root root 64 6月 4 13:03 0 -> /root/file
lrwx------ 1 root root 64 6月 4 13:03 1 -> /dev/pts/0
lrwx------ 1 root root 64 6月 4 13:03 2 -> /dev/pts/0
lr-x------ 1 root root 64 6月 4 13:03 254 -> /root/a.sh
lrwx------ 1 root root 64 6月 4 13:03 255 -> /dev/pts/0
lrwx------ 1 root root 64 6月 4 13:03 8 -> /dev/pts/0

echo "close FD 8:"
exec 0<&8 8<&- #将FD 8复制到FD 0,恢复FD 0,并关闭FD 8,其他进程可以重复使用FD 8
echo -n "Enter Data:"
read c #read从标准输入读取数据
echo $c
echo $$
echo $PPID
sleep 100

[root@server1 4598]# ll fd
总用量 0
lrwx------ 1 root root 64 6月 4 13:11 0 -> /dev/pts/0
lrwx------ 1 root root 64 6月 4 13:11 1 -> /dev/pts/0
lrwx------ 1 root root 64 6月 4 13:11 2 -> /dev/pts/0
lr-x------ 1 root root 64 6月 4 13:11 254 -> /root/a.sh
lrwx------ 1 root root 64 6月 4 13:11 255 -> /dev/pts/0

 

#eval重新提交shell
#!/bin/bashwhile read NAME VALUE     #第一列作为变量名,第二列作为变量值        //对应文件中的两列
do
eval "${NAME}=${VALUE}"   #第1轮变量替换,eval重新提交shell完成赋值操作
done < evalsource         #输入重定向
echo "var1=$var1"         #变量赋值
echo "var2=$var2"
eval "${NAME}=${VALUE}" 为一段可执行的命令,而不是字符串

[root@server1 ~]# eval "cc=100"
[root@server1 ~]# echo $cc
100

[root@server1 ~]# echo "dd=100"
dd=100

[root@server1 ~]# x=100
[root@server1 ~]# ptrx=x
[root@server1 ~]# eval echo \$$ptrx
100
[root@server1 ~]# eval $ptrx=50
[root@server1 ~]# echo $x
50
[root@server1 ~]# echo $ptrx
x

转载于:https://www.cnblogs.com/zengkefu/p/5558539.html

bash手册 之重定向原理与实现相关推荐

  1. ansys参数化编程与命令手册_查看Bash手册--man命令

    大多数linux发行版都有用来查找shell命令和其他GNU工具信息的在线手册,有的书中把这个手册叫做bash手册,可以通过man命令来查找shell命令或者GNU工具的手册页面.阅读手册页面最好有一 ...

  2. linux重定向文件容加时间,linux – 如何在Bash中将stdout重定向到文件时添加时间戳?...

    我有一个程序(服务器),我正在寻找一种方法(脚本),将所有的stdout重定向(或更好地复制)到文件并为每个条目添加时间戳. 我做了一些研究,我能得到的最远的是得益于How to add timest ...

  3. linux用echo重定向到文件,Linux – Bash将String重定向到文件

    我写了一个简单的脚本,它正在读取文件内容并在此文件中递增一个数字,然后我使用awk保持更改,当我尝试使用'>'重定向新的String时整个字符串重定向到一行,而不是像原来的那样是4行. #!/b ...

  4. 详解ELF重定向原理

    重定向是计算机技术中非常底层的概念和操作.它指的是将程序中涉及到的变量名与变量在计算机内存中的位置关联起来.当在代码中执行类似x=1;的语句时,编译器需要通过重定向信息找到变量x对应的内存位置,然后将 ...

  5. linux 切换不了csh,BASH  CSH linux  重定向(ZZ)

    bash: 应该允许输入来自以下两种方式: 在命令行上指定的文件名.例如: $ command input_file 在这个例子中,command 应该读取文件 input_file. 标准输入(st ...

  6. Bash 手册 v3.2 - 5

    3.5 Shell扩展 =============                                                                            ...

  7. 大数据面试通关手册 | Kylin入门/原理/调优/OLAP解决方案和行业典型应用

    Kylin入门/原理/调优/OLAP解决方案和行业典型应用一网打尽. 一:背景历史和使命 背景和历史 现今,大数据行业发展得如火如荼,新技术层出不穷,整个生态欣欣向荣.作为大数据领域最重要的技术的 A ...

  8. 不安全的Url重定向原理概述和案例

    一.不安全的url跳转 1. 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方. 如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地, ...

  9. 【Linux】基础IO(万字详解) —— 系统文件IO | 文件描述符fd | 重定向原理

  10. linux下的IO重定向与管道相关的知识简析

    一.bash重定向部分简单翻译 1.1.bash手册关于重定向短短的注解(因为过于经典,所以摘录出来) 我的翻译要开始毁经典啦... 参考: https://blog.csdn.net/spch200 ...

最新文章

  1. 关于二叉树的层次遍历的花样(c++实现)
  2. 如何爬取知乎中问题的回答以及评论的数据?
  3. APPCAN MAS接口之SOAP
  4. nginx-URL重写
  5. openwrt多wan限上下行速脚本,基于qosv4,imq模块替换成ifb模块[ZT]
  6. 《走遍中国》珍藏版(一)
  7. php explore im,浏栏器-explore.class.php
  8. 开发模式遵循的规则_研究每个软件开发人员应遵循的10条规则
  9. 用Siamese和Dual BERT来做多源文本分类
  10. java awt jar_【Java学习笔记】操作JAR文件
  11. java引用计数法、可达性分析法、强软虚弱、强引用、软引用、弱引用、虚引用、回收方法区、finalize()方法
  12. 视频教程-轻松搞定Spring全家桶(初识篇)-Java
  13. Python3迅雷vip账号批量抓取导入excel中
  14. 5款实用报表工具分析,报表工具这样选!
  15. Internet时间自动同步后,计算机系统时间比北京时间不能同步一致
  16. 如何有效的避免图片侵权(100%避免网站图片侵权)
  17. VS2017中解决MSB4030报错问题
  18. Go开发 之 容器(数组Array、切片slice、映射map、列表list)
  19. 局域网arp攻击_MAC与IP不得不说的故事--深入ARP工作原理
  20. 四款小众实用的办公神器软件,值得你去收藏

热门文章

  1. 你确定你真的懂Nginx与PHP的交互?
  2. nginx+iis、NLB、Web Farm、Web Garden、ARR
  3. Linux重定向和管道的基础学习
  4. 外军网络空间作战简报
  5. 教你彻底禁止暴风影音后门进程自己启动
  6. Vuex的官方文档笔记
  7. .php on line 0,windows启动apache提示PHP Startup: in Unknown on line 0
  8. 计算机导论python知识点_每个计算机学生都应该掌握什么
  9. oracle物理块坏了重启,Oracle 物理结果损坏处理
  10. jdbc mysql分层_JDBC和数据库访问层