• 《Advanced Bash-scripting Guide》学习(十六):一个显示输入类型的脚本


    本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅

    1 function show_input_type()
    2 {
    3     [ -p /dev/fd/0 ]  && echo PIPE || echo STDIN                           #-p 检查文件是不是管道文件
    4 }
    5 
    6 show_input_type "Input"
    7 echo "Input" | show_input_type

    换种形式

     1 function show_input_type()           
     2 {
     3     if [ -p /dev/fd/0 ]
     4     then
     5         echo PIPE
     6     else
     7         echo STDIN
     8     fi
     9 }
    10 
    11 show_input_type "Input"
    12 echo "Input" | show_input_type

    这个脚本是对标准输入的参数传入形式做一个判断,如果是直接输入的,那么echo STDIN,如果是通过管道的形式传入的参数,那么打印echo PIPE

    这个脚本中/dev/fd/0换成/proc/self/fd或/dev/stdin也是成立的

    注意:/dev/fd下的文件描述符0,1,2都软链接到第二个终端/dev/pts/1,而/proc/self/fd下的文件描述符0,1,2也都软链接到/dev/pts/1,而设备文件名/dev/stdin,/dev/stdout,/dev/stderr又都软链接到/proc/self/fd/0、1、2,试问,/dev/fd下的文件描述符和/proc/self/fd下的有什么区别和联系?

    shell中函数的定义有两种方法
    function fname()
    {
    statements;
    }

    fname()
    {
    statements;
    }
    注意,()内是没有参数的,它并不像C语言那样,在()里可以有参数
    那么这些参数要怎么传递进来呢?其实参数传递方式为:fname;(不需要传递参数)或fname agr1 arg2(需要传递两个参数)

  • 相关阅读:
    PHP无限极分类
    MySQL批量插入测试数据
    MySQL常见面试知识点汇总
    小程序交易组件-自定义交易组件相关知识
    Matplotlib
    sklearn之计算回归模型的四大评价指标(explained_variance_score、mean_absolute_error、mean_squared_error、r2_score)
    pandas.core.frame.DataFrame 切片技巧
    Pyspider all 出现的坑
    mysql 问题
    爬虫遇到HTTP Error 403的问题
  • 原文地址:https://www.cnblogs.com/my_captain/p/7146277.html
Copyright © 2020-2023  润新知