• Linux下Shell编程之必背必记(一)


    1.Shell常用特殊变量含义解释
    
    
    $# 传入Shell脚本的参数个数
    $? 最后运行命令的结束码(0表示:成功执行 非0表示:执行过程中出现异常或非正常退出)
    
    
    状态码:
    0 命令成功结束
    1 通用未知错误
    2 误用shell命令
    126 命令不可执行
    127 没找到命令
    128 无效退出参数
    128+x Linux信号x的严重错误
    130 Linux信号2的严重错误,即命令通过SIGINT(Ctrl+C)终止
    255 退出状态码越界
    
    
    $$ Shell本身的PID(即ProcessID)
    $! Shell最后运行的后台ProcessID
    $* 所有的参数列表 
    $@ 所有的参数列表 没看出和$*有什么区别,都是以"$1" "$2" ... "$n"的形式输出所有参数
    $0 Shell本身的文件名
    $- 使用Set命令设定的Flag一览
    $1 - $n 添加到Shell的各个参数值,$1是第一个参数、$2是第二个参数...
    
    
    2.Shell数值、字符串、文件的比较
    
    
    数值比较:
    -eq 等于
    -ne 不等于
    -gt 大于
    -ge 大于等于
    -lt 小于
    -le 小于等于
    以上长和test命令一起使用,如:
    #!/bin/bash
    value1=8
    if [$value1 -gt 6] 
    then
      echo "$value1 is greater than 6"
    fi
    
    
    字符串比较: 
    = 等于
    != 不等于
    < 小于
    > 大于
    -n str  检查str的长度是否非0
    -z str  检查str的长度是否为0 
    
    
    文件比较:
    -d file 检查file是否存在并是一个目录
    -e file 检查file是否存在
    -f file 检查file是否存在并是一个文件
    -r file 检查file是否存在并可读
    -s file 检查file是否存在并非空
    -w file 检查file是否存在并可写
    -x file 检查file是否存在并可执行
    -O file 检查file是否存在并属当前用户所有
    -G file 检查file是否存在并且默认组与当前用户相同
    file1 -nt file2 检查file1是否比file2新
    file1 -ot file2 检查file1是否比file2旧
    
    3.Bash Shell提供了两项可在if - then语句中使用的高级特性
    	3.1 用于数学表达式的双括号
                   双括号命令符号:
    		val++  后增
    		val-- 后减
    		++val 先增
    		--val 先减
    		! 逻辑求反
    		~ 位求反
    		** 幂运算
    		<< 左位移
    		>>右位移
    		& 位布尔和
    		| 位布尔或
    		&& 逻辑和
    		|| 逻辑或
    #!/bin/bash
    value1=8
    if (( $value1 ** 2 > 60 )))
    then
    	(( value2=$value ** 2))
    	echo " the square of $value1 is $value2 !"
    fi
    	3.2 用于高级字符串处理功能的双方括号
    #!/bin/bash
    if [[ $username == bi* ]]
    then
    	echo "hi $username !"
    else 
    	echo "$username is not existed !"
    fi
    双方括号提供了test命令未提供的另一个特性,即模式匹配。
    双等号将右边的字符串 bi* 视为一个模式,并应用模式匹配规则。上面示例表示双方括号命令$username环境变量进行匹配,看它是否以字母r开头,
    如果是,执行then后代码块,否则执行else后代码块。
    

    参考资料 《Linux命令行与shell脚本编程大全(第三版)》  

  • 相关阅读:
    ironic port bind
    pdb /usr/bin/neutron-server
    networking_generic_switch
    [CodeForces586D]Phillip and Trains
    [CodeForces598D]Igor In the Museum
    [poj3468]A Simple Problem with Integers
    [bzoj1503][NOI2004]郁闷的出纳员
    [bzoj1208][HNOI2004]宠物收养所
    [luogu3384][模板]树链剖分
    [CodeForces869A]The Artful Expedient
  • 原文地址:https://www.cnblogs.com/binguo2008/p/7208953.html
Copyright © 2020-2023  润新知