加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 综合聚焦 > Linux > 正文

LINUX入门:Linux Shell脚本中read、重定向和文件句柄和进程数目控制

发布时间:2020-07-23 14:46:33 所属栏目:Linux 来源:互联网
导读:介绍《LINUX入门:Linux Shell脚本中read、重定向和文件句柄和进程数目控制》开发教程,希望对您有用。

《LINUX入门:Linux Shell脚本中read、重定向和文件句柄和进程数目控制》要点:
本文介绍了LINUX入门:Linux Shell脚本中read、重定向和文件句柄和进程数目控制,希望对您有用。如果有疑问,可以联系我们。

Linux Shell脚本中read、重定向和文件句柄和进程数目控制

1、把重定向作为read的输入

read可以从尺度输入读取一行,下面就使用read配合重定向把文件作为read的标注输入.

#!/bin/bash #name: links.sh #Revision: 1.1 #Date: 2017// #Author: linuxidc #Email: memeda@163.com #Website: #Description:Printtheip-links #Notes: #------------------------------------------------------------------------------- #Copyright: 2017(c)linuxidc #License: GPL # whilereadline;do echo"line=$line" sleep2 done</home/linuxidc/model.txt #把文件作为read的的输入 unsetline

接下来运行一下

root@linuxidc:/home/yemo#bash file_des.sh line=#!/bin/bash line=#name: links.sh line=#Revision: 1.1 line=#Date: 2017/6/ line=#Author: linuxidc line=#Email: memeda@163.com line=#Website: line=#Description:Printtheip-links line=#Notes: line=#-------------------------------------------------------------------------------

输出了我的bash头部模板文件的内容

2、再话文件描述符

文件在打开时候系统给每一个打开的文件分配用于维护的描述符,这通常包含系统打开文件描述符表,进程级的文件描述符表(文件操作符标志和文件句柄的引用),文件系统i-node表.

基本用法

execfd<>file #创立一个文件句柄 execfd>&- or exec-fd<& #关闭文件句柄

创立文件描述符后在/proc/PID/fd中新建,通过$$查看当前shell的PID.

root@linuxidc:/home/yemo#cd/proc/$$/fd root@linuxidc:/proc/6833/fd#ls 0 1 2 255

给文件/home/linuxidc/model.txt创立一个描述符fd6

root@linuxidc:/proc/6833/fd#exec6<>/home/linuxidc/model.txt root@linuxidc:/proc/6833/fd#ls 0 1 2 255 6

打开fd6,查看内容

root@linuxidc:/proc/6833/fd#cat6 #!/bin/bash #name: links.sh #Revision: 1.1 #后面挺长就省略了,这不是重点

我们可以通过fd6,读写文件model.txt

root@linuxidc:/proc/6833/fd#echo"hellogirl">>6 root@linuxidc:/proc/6833/fd#tail-16 hellogirl

如果删除文件,fd6会怎么样呢

root@linuxidc:/proc/6833/fd#stat-c%i/home/linuxidc/model.txt #先查看下inode 128531 root@linuxidc:/proc/6833/fd#stat-c%i6 49938 root@linuxidc:/proc/6833/fd#rm/home/linuxidc/model.txt root@linuxidc:/proc/6833/fd#ls 0 1 2 255 6

fd6显示成红色,表现文件已经不存在了,我们打开一下

root@linuxidc:/proc/6833/fd#cat6 #!/bin/bash #name: links.sh #Revision: 1.1 #此处省略很多行 hellogirl

依旧可以打开,文件的删除只是删除的上级目录的存在的一个文件名,当文件在使用时候,并不会释放inode,只要block的数据没被覆盖都可以找回来,这里文件不大直接打开fd6重定向回去就好.

3、通过fd把文件内容传给read

root@linuxidc:/proc/6833/fd#exec6>&- #关闭文件句柄 root@linuxidc:/proc/6833/fd#ls 0 1 2 255

新建脚本测试一下

使用-u选项:

-u fdread from file descriptor FD instead of the standard input

#!/bin/bash #filename: file_des.sh #Revision: 1.1 #Date: 2017-06-09 #Author: linuxidc #Email: memeda@163.com #QQ: 787743742 #Website: #Description: #Notes: #------------------------------------------------------------------------------- #Copyright: 2017(c)linuxidc #License: GPL exec6<>/home/linuxidc/model.txt #创建文件句柄(fd6) whileread-u6line;do #循环读取文件 echo"line=$line" sleep2 done exec6>&- #文件用完,关闭文件句柄 unsetline #自定义变量,结束释放

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读