设为首页 收藏本站
查看: 1927|回复: 0

Shell 标准输入、输出和错误

[复制链接]

尚未签到

发表于 2018-8-24 09:31:19 | 显示全部楼层 |阅读模式
  防伪码:桃花潭水深千尺,不及汪伦送我情。
  文件描述符(fd):文件描述符是一个非负整数,在打开现存文件或新建文件时,内核会返回一个
  文件描述符,读写文件也需要使用文件描述符来访问文件。
  内核为每个进程维护该进程打开的文件记录表。文件描述符只适于 Unix、Linux 操作系统。
  8. 1  标准输入、输出和错误
  文件描述符  描述  映射关系
  0  标准输入,键盘  /dev/stdin -> /proc/self/fd/0
  1  标准输出,屏幕  /dev/stdout -> /proc/self/fd/1
  2  标准错误,屏幕  /dev/stderr -> /proc/self/fd/2
  8.2  重定向符号
  符号  描述
  >  符号左边输出作为右边输入(标准输出)
  >>  符号左边输出追加右边输入
  <  符号右边输出作为左边输入(标准输入)
  word
  如果 n 没有指定,默认是 1
  示例:
  打印结果写到文件:echo "test" > a.txt
  当没有安装 bc 计算器时,错误输出结果写到文件:echo "1 + 1" |bc 2> error.log
  2)追加重定向输出
  一般格式:[n]>>word
  如果 n 没有指定,默认是 1
  示例:
  打印结果追加到文件:echo "test" >> a.txt
  当没有安装 bc 计算器时,错误输出结果追加文件:echo "1 + 1" |bc 2> error.log
  8.4 4 重定向输入
  一般格式:[n]word 和>&word 等价于>word 2>&1
  &将标准输出和标准输入绑定到一起,重定向 word 文件。
  示例:
  当不确定执行对错时都覆盖到文件:echo "1 + 1" |bc &> error.log
  当不确定执行对错时都覆盖到文件:echo "1 + 1" |bc > error.log 2>&1
  2)追加标准输出和标准错误
  追加格式:&>>word 等价于>>word 2>&1
  当不确定执行对错时都追加文件:echo "1 + 1" |bc &>> error.log
  将标准输出和标准标准输入追加重定向到 word:
  /dev/null 2>&1
  这就让标准和错误输出到了空设备。
  忽略标准输出:
  # echo "test" >/dev/null
  忽略错误输出:
  # echo "1 + 1" |bc 2>/dev/null
  d 8.7 read  命令
  read 命令从标准输入读取,并把输入的内容复制给变量。
  命令格式: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p
  prompt] [-t timeout] [-u fd] [name ...]
  -e  在一个交互 shell 中使用 readline 获取行
  -r  不允许反斜杠转义任何字符
  -s  隐藏输入
  -a array  保存为数组,元素以空格分隔
  -d delimiter  持续读取直到遇到 delimiter 第一个字符退出
  -i text  将 test 文本作为
  -n nchars  读取 nchars 个字符返回,而不是等到换行符
  -N nchars  读取 nchars 个字符返回,除非遇到文件结束符或超时,其他分隔符都被忽略
  -p prompt  提示信息
  -t timeout  等待超时时间,秒
  -u fd  指定文件描述符号码作为输入,默认是 0
  name  变量名
  示例:
  获取用户输入保存到变量:
  # read -p "Please input your name: " VAR
  Please input your name: lizhenliang
  # echo $VAR
  lizhenliang
  用户输入保存为数组:
  # read -p "Please input your name: " -a ARRAY
  Please input your name: a b c
  # echo ${ARRAY
  • }
      a b c
      遇到 e 字符返回:
      # read -d e VAR
      123
      456
      e
      # echo $VAR
      123 456
      从文件作为 read 标准输入:
      # cat a.txt
      adfasfd
      # read VAR < a.txt
      # echo $VAR
      adfasfd
      while 循环读取每一行作为 read 的标准输入:
      # cat a.txt |while read LINE; do echo $LINE; done
      123
      abc
      分别变量赋值:
      # read a b c
      1 2 3
      # echo $a
      1
      # echo $b
      2
      # echo $c
      3
      # echo 1 2 3 | while read a b c;do echo "$a $b $c"; done
      1 2 3
      谢谢观看,真心的希望能帮到您!


  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555819-1-1.html 上篇帖子: Linux Shell编程四剑客-sed 下篇帖子: linux常用shell命令
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表