zoukankan      html  css  js  c++  java
  • shell编程(一)--常用变量及表达式

    $? 表示执行上一个命令的返回值:如果为0表示执行成功,非0表示执行失败
    $1、$2、。。。 分别表示参数1、参数2、。。。
    $# 表示这个程序的参数个数
    $*/$@ 表示这个程序的所有参数
    $$ 表示这个程序的PID
    $! 表示执行上一个后台命令的PID
    $_ 表示这个变量保存之前执行的命令的最后一个参数的值

    执行脚本时加-x可以显示脚本的执行过程
    如 sh -x stats.rd.task.sh

    不执行脚本,只是检查语法的模式,将返回所有语法错误
    如 sh -n stats.rd.task.sh

    命令替换符``

    case结构与C/C++中的switch结构是相同的. 它允许通过判断来选择代码块中多条路
    径中的一条. 它的作用和多个if/then/else语句的作用相同, 是它们的简化结构, 特别适用于创
    建菜单.
    case "$variable" in
    $condition1" )
    TT class="REPLACEABLE" >command...
    ;
    $condition2" )
    TT class="REPLACEABLE" >command...
    ;
    esac
    1、对变量使用""并不是强制的, 因为不会发生单词分割
    2、每句测试行, 都以右小括号)来结尾
    3、每个条件判断语句块都以一对分号结尾;
    4、case块以esac (case的反向拼写)结尾

    expr
    通用求值表达式: 通过给定的操作(参数必须以空格分开)连接参数, 并对参数求值. 可以是算术操作, 比较操作, 字符串操作或者是逻辑操作.
    expr 3 + 5
    #返回8
    y=`expr $y + 1`
    增加变量的值, 与let y=y+1和y=$(($y+1))的效果相同. 这是使用算术表达式的一个例子.
    z=`expr substr $string $position $length`
    在位置$position上提取$length长度的子串.

    while
    这种结构在循环的开头判断条件是否满足, 如果条件一直满足, 那么就一直循环下去 (返回0作为退出状态码). 与for循环的区别是, while循环更适合在循环次数未知的情况下使用.
    while [ "$var0" -lt "$LIMIT" ]
    do
    echo -n "$var0 " # -n 将会阻止产生新行.
    # ^ 空格, 数字之间的分隔.

    var0=`expr $var0 + 1` # var0=$(($var0+1)) 也可以.
    # var0=$((var0 + 1)) 也可以.
    # let "var0 += 1" 也可以.
    done # 使用其他的方法也行.

    2>&1
    将错误消息的输出(2), 发送到与标准输出($1)所指向的地方.

    /dev/null
    把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.
    cat $filename >/dev/null
    # 文件内容丢失,而不会输出到标准输出.
    rm $badname 2>/dev/null
    # 这样错误信息[标准错误]就被丢到太平洋去了

  • 相关阅读:
    【Codeforce 487E】【UOJ#30】—Tourists(圆方树+树链剖分)
    【省选模拟】—River(贪心)
    【BZOJ4012】【HNOI2015】—开店(动态点分治)
    【BZOJ4543】【POI2014】Hotel加强版(长链剖分)
    【BZOJ3809】—GTY的二逼妹子序列(莫队+权值分块)
    【BZOJ2878】【NOI2012】—迷失游乐园(基环树期望dp)
    【2019省选模拟】—树(并查集+容斥)
    【BZOJ2120】—数颜色(带修莫队)
    【BZOJ3597】【SCOI2014】—方伯伯运椰子(分数规划)
    【BZOJ3598】【SCOI2014】方伯伯的商场之旅(数位dp)
  • 原文地址:https://www.cnblogs.com/atai/p/5989427.html
Copyright © 2011-2022 走看看