bash shell 之变量笔记

1. 将变量作为字符串传递参数

    用双引号 "$变量"

    例如:

  cat file |grep "$parameter" 

2. 取字符串的一部分

    ${变量:位置起点}

    ${变量:位置起点:长度}

    PS:位置起点默认为0,在${}中,变量前面的$可以不写

  #定义变量
  myname=lovelace
  #取得变量字符串从第三个字符开始到字符串结尾的所有字符
  echo ${myname:3}
  elace
  #取得变量字符串中从第四个字符开始,长度为2的字符
  echo ${myname:4:2}
  la

3. 取部分参数

    命令行参数从$1开始,$@代表全部,$0代表指令本身

    ${@:起点}:由起点开始,取得后面的所有参数

    ${@:起点:个数}:由起点开始,取指定个数的位置参数

    示例脚本 argument.sh

  #取得程序名称
  echo $0
  #取得变量的所有值
  echo ${@:1}
  #取得变量的个数
  echo $# 

    执行指令和结果:

  # ./argument.sh 12 32 45
  -------------------------------------------------
  ./argument.sh
  12 32 45
  3

4. 变量运算

    用expr,bc进行高级运算。可以用echo `expr 1 +2`来输出1+2的结果,用expr表示后面的表达式为一个数学运算。

    用let进行数学运算。可以先将运算的结果赋值给变量b,运算命令是b=let 1 + 2。然后用echo$b来输出b的值。

    用$[]表示数学运算。将一个数学运算写到$[]符号的中括号中,中括号中的内容将先进行数学运算。

    用(( ))可进行运算,也可以用来转换字符串成数字。例如:

  str='235689741'
  (($str))
  echo $[ $str+5 ]

5. 在shell中字符串与数值的比较方法是不同的,要注意区分

    整数比较:

    -eq         等于,如:if [ "$a" -eq "$b" ]
    -ne         不等于,如:if [ "$a" -ne "$b" ]
    -gt          大于,如:if [ "$a" -gt "$b" ]
    -ge         大于等于,如:if [ "$a" -ge "$b" ]
    -lt           小于,如:if [ "$a" -lt "$b" ]
    -le          小于等于,如:if [ "$a" -le "$b" ]
    <            小于(需要双括号),如:(("$a" < "$b"))
    <=          小于等于(需要双括号),如:(("$a" <= "$b"))
    >            大于(需要双括号),如:(("$a" > "$b"))
    >=          大于等于(需要双括号),如:(("$a" >= "$b"))

    字符串比较:

    =           等于,如:if [ "$a" = "$b" ]
    ==         等于,如:if [ "$a" == "$b" ], 与=等价
                 注意:==的功能在[[]]和[]中的行为是不同的,如下:
                 1 [[ $a == z* ]]            # 如果$a以"z"开头(模式匹配)那么将为true
                 2 [[ $a == "z*" ]]         # 如果$a等于z*(字符匹配),那么结果为true
                 3 [ $a == z* ]              # File globbing 和word splitting将会发生
                 4 [ "$a" == "z*" ]         # 如果$a等于z*(字符匹配),那么结果为true
    !=         不等于,如:if [ "$a" != "$b" ], 这个操作符将在[[]]结构中使用模式匹配.
    <          小于,在ASCII字母顺序下.如:
                   if [[ "$a" < "$b" ]]
                   if [ "$a" \< "$b" ]     在[]结构中"<"需要被转义.
    >          大于,在ASCII字母顺序下.如:
                   if [[ "$a" > "$b" ]]
                   if [ "$a" \> "$b" ]  在[]结构中">"需要被转义.
    -z         字符串为"null".就是长度为0.
    -n         字符串不为"null"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值