• Linux Shell 编程常见规则及退出状态码


    状态码 描述
    0 命令成功结束
    1 通用未知错误  
    2 误用Shell命令
    126 命令不可执行
    127 没找到命令
    128 无效退出参数
    128+x Linux信号x的严重错误
    130 命令通过Ctrl+C控制码越界
    255 退出码越界

    状态码访问:

    $echo $?

    Shell符号规则,现总结备忘如下:

    1.方括号[]

    一般来说常用于test命令

    example:

    [ $arg1 = $arg2 ] :检查两个参数是否相等。

    [ -d $HOME ]  --检查$HOME代指是否为目录文件,若是则返回状态码0,这种情况下才判断成功

    其实质相当于test -d $HOME,我们可以用

    $echo $? 检测状态码

    2.双圆括号(( expression ))

    作用:双圆括号允许你将高级数学表达式放入比较中

    下面是双圆括号所支持的命令符号:

    双圆括号命令符号
                        符号                                                                          描述                                                   
    val++ 后增
    val-- 后减
    ++val 先加
    --val 先减
    ! 逻辑求反
    ~ 位求反
    ** 幂运算
    << 左位移
    >>  右位移
    &  位布尔和
    |  位布尔或
    &&  逻辑和
    ||  逻辑或

     3.双方括号 [[ expression ]]

     作用:提供了针对字符串比较高级特性,除了可以像方括号使用test命令那样之外,还可以进行模式匹配。

    4.$[ operation ]

    作用:执行数学表达式

    example:

    var3=$[ $var1 / $var2 ]

     5.命令行参数

    5.1如何简单接受命令行参数

    $0 : 程序名

    $1-$9:字符串或者数值参数。

    ${10}10个参数以上表达方式

    参数计数:$#,这个变量跟C语言中的argc是一样的作用,只不过没有显示的表示而已。

    5.2 如何遍历参数 :$*和$@的区别

    区分codes(来自Linux 命令行与shell脚本编程大全):

    res:

    5.3 如何处理选项与参数

    codes:

     1 #!/bin/bash
     2 while [ -n "$1" ]
     3 do
     4 
     5    case "$1" in
     6 
     7     -a) echo "Found the -a option" ;;
     8 
     9      -b) echo "Found the -a option" ;;
    10 
    11     -c) echo "Found the -a option" ;;
    12 
    13     --) shift break  ;;
    14 
    15   esac
    16 
    17   shift
    18 
    19 done
    20 
    21 count=1
    22 
    23 for param in $@
    24 
    25 do
    26 
    27   echo "Parameter #$count: $param"
    28 
    29   count=$[ $count +1 ]
    30 
    31 done

     6、Shell的输入与输出

    这里只说明几种特殊的情况:

    a.只重定向错误输出:

    方法:将对应的文件描述符写在重定向符号前面。

    b.临时重定向

    方法:在文件描述符前加and(&)

    $echo "This is an error message" >&2

    c.永久重定向

    方法:用exec来告诉shell在脚本运行期间重定向某个文件描述符。

    $exec 1>testout

  • 相关阅读:
    我第一次上传自己的Android作品——自己的名片夹
    我开发的宣传软件,劲撑广州恒大冲击亚冠,,无论你是安卓程序员还是广州恒大球迷,欢迎下载代码,或者留下邮箱,我会把Apk发过去
    写死我的QQ程序,不过玩的效果很爽^_^,、、不敢回头去看代码了,想吐、
    有些关于Google地图开发中密钥申请的不解,一直走不下去,求助
    一个有趣的Sql查询
    笑谈“委托”与“事件”
    《中国编程挑战赛--资格赛》赛题及解答
    [转载] 在.net安装程序部署SQL Server数据库
    VS.Net Add_In Example(C#源码)
    对中国编程资格赛一题的解答
  • 原文地址:https://www.cnblogs.com/qianzhilan/p/4391210.html
Copyright © 2020-2023  润新知