• exec 重定向


    文件中常用的重定向:

    command > filename把把标准输出重定向到一个新文件中
    command >> filename 把把标准输出重定向到一个文件中 (追加)
    command 1 > fielname 把把标准输出重定向到一个文件中
    command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
    command 2 > filename 把把标准错误重定向到一个文件中
    command 2 >> filename 把把标准输出重定向到一个文件中 (追加)
    command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中 (追加)
    command < filename >filename2   把命令以 filename文件作为标准输入,以 filename2文件作为标准输出
    command < filename 把command命令以filename文件作为标准输入
    command << delimiter 把从标准输入中读入,直至遇到 delimiter分界符
    command <&m 把把文件描述符 m作为标准输入
    command >&m 把把标准输出重定向到文件描述符 m中
    command <&- 把关闭标准输入

    需要明确的一点是可以使用exec命令通过文件描述符打开和关闭文件。


    >&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;如果n之前&那么n则被理解成文件的名字,当表明是文件描述符时需要加上&

    <&n 标准输入复制自文件描述符 n;

    <&- 关闭标准输入(键盘);

    >&- 关闭标准输出;

    n<&- 表示把 n 号输入关闭;

    n>&- 表示把 n 号输出关闭;

    exec 1>outfilename # 打开文件outfilename作为stdout。可以理解为把标准输出的东西都定向到outfilenam 中

    exec 2>errfilename # 打开文件 errfilename作为 stderr。

    exec 0<&- # 关闭 FD0。

    exec 1>&- # 关闭 FD1。

    exec 5>&- # 关闭 FD5。

    下面来看一个小例子:

     1 exec 4<&0 0<desc
     2 
     3 read line1
     4 
     5 exec 0<&4
     6 echo $line1
     7 
     8 
     9 echo -n "please input number :"
    10 read line2
    11 echo $line2

    desc可以推断出是一个文件

    第一行的意思是把文件描述符0(标准输入)定向到文件描述符4,相当于把文件描述符0备份了一份保存在4中,然后把文件定向到文件描述符0,则以后的标准输入都是从文件desc中读取。

    第三行 读入一行

    第五行 原来是从desc中读,现在从文件描述符4中读,文件描述符4中保存的是原来文件描述符0的东西,所以现在从标准输入读(键盘)

    第十行 从标准输入

  • 相关阅读:
    jmeter 5压测https接口报错javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake的解决方法
    压测部署在k8s的服务时,出现{"message":"An unexpected error occurred"}错误的可能原因
    用jmeter测试post接口body带中文参数报错,同样的body粘贴到postman里正常-----解决方法
    hive删除分区表以及修复分区表
    查看Hive表信息及占用空间
    jmeter测试的get接口中有特殊字符时的处理
    面试题-给你一个扫码支付的二维码,如何写测试用例?
    零碎的 软件测试面试题
    linux常见问题
    自动化面试常问问题
  • 原文地址:https://www.cnblogs.com/cdwodm/p/5021820.html
Copyright © 2020-2023  润新知