zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Java Web idea Filter配置(过滤器配置)
    JAVA中一些定时器的使用
    数据库事务的四大特性
    SQL语句中----删除表数据drop、truncate和delete的用法
    什么是索引?Mysql目前主要的几种索引类型
    MySQL练习题
    测试6--模拟两人在对话1000次
    实验室每日一题WP-12月7日
    实验室每日一题WP-12月5日
    实验室每日一题WP-12月4日
  • 原文地址:https://www.cnblogs.com/qianzhilan/p/4391210.html
Copyright © 2011-2022 走看看