zoukankan      html  css  js  c++  java
  • shell运算符

    • declare声明变量类型

    declare [+/-] [option] variable name

    options:

      -  给变量设定类型属性

      +  取消变量的类型属性

      -a  将变量声明为数组型

      -i  将变量声明为整数型 ( integer )

      -x  将变量声明为环境变量

      -r  将变量声明为只读变量

      -p  显示指定变量的被声明的类型

    1 ucm@ucm-Aspire-TC-606:~$ a=11
    2 ucm@ucm-Aspire-TC-606:~$ b=22
    3 ucm@ucm-Aspire-TC-606:~$ declare -i c=$a+$b
    4 ucm@ucm-Aspire-TC-606:~$ echo $c
    5 33
    6 ucm@ucm-Aspire-TC-606:~$ declare -p c
    7 declare -i c="33"
    8 ucm@ucm-Aspire-TC-606:~$ 
    •  声明数组变量

    #定义数组  查看数组

    1 ucm@ucm-Aspire-TC-606:~$ movie[0]=zp
    2 ucm@ucm-Aspire-TC-606:~$ movie[1]=tp
    3 ucm@ucm-Aspire-TC-606:~$ declare -a movie[2]=love
    4 ucm@ucm-Aspire-TC-606:~$ echo ${movie}
    5 zp
    6 ucm@ucm-Aspire-TC-606:~$ echo ${movie[2]}
    7 love
    8 ucm@ucm-Aspire-TC-606:~$ echo ${movie[*]}
    9 zp tp love
    • 声明环境变量

    declare -x test=123

    #和export作用相似,export其实是就是调用的declare -x声明的环境变量

    • 声明变量只读属性

    declare -r test

    #给test赋予只读属性,但是请注意只读属性会让变量不能修改/删除,甚至不能取消只读属性

     1 ucm@ucm-Aspire-TC-606:~$ declare -p test
     2 declare -x test="123"
     3 ucm@ucm-Aspire-TC-606:~$ declare -r test
     4 ucm@ucm-Aspire-TC-606:~$ declare -p test
     5 declare -rx test="123"
     6 ucm@ucm-Aspire-TC-606:~$ test=789
     7 bash: test: 只读变量
     8 ucm@ucm-Aspire-TC-606:~$ unset test
     9 bash: unset: test: 无法取消设定: 只读 variable
    10 ucm@ucm-Aspire-TC-606:~$ declare +r test
    11 bash: declare: test: 只读变量
    12 ucm@ucm-Aspire-TC-606:~$ declare -p test
    13 declare -rx test="123"
    14 ucm@ucm-Aspire-TC-606:~$ 
    • 查询变量的属性

    declare -p

    #查询所有变量的属性

    declare -p 变量名

    #查询制定变量的属性


    • 数值运算

    方法一  declare -i 

    方法二  expr或let数值运算工具  变量的+号左右必须要有空格

    1 ucm@ucm-Aspire-TC-606:~$ a=44
    2 ucm@ucm-Aspire-TC-606:~$ b=55
    3 ucm@ucm-Aspire-TC-606:~$ c=$(expr $a + $b)
    4 ucm@ucm-Aspire-TC-606:~$ echo $c
    5 99
    6 ucm@ucm-Aspire-TC-606:~$ c=$(expr $a+$b)
    7 ucm@ucm-Aspire-TC-606:~$ echo $c
    8 44+55
    9 ucm@ucm-Aspire-TC-606:~$ 

    方法三  "$((运算式))" 或 "$[运算式]"  推荐使用"$((运算式))"

    1 ucm@ucm-Aspire-TC-606:~$ d=$(($a+$b))
    2 ucm@ucm-Aspire-TC-606:~$ e=$[$a+$b]
    3 ucm@ucm-Aspire-TC-606:~$ echo $d
    4 99
    5 ucm@ucm-Aspire-TC-606:~$ echo $e
    6 99
    7 ucm@ucm-Aspire-TC-606:~$ 

      逻辑运算

    1 ucm@ucm-Aspire-TC-606:~$ f=$((0&&1))
    2 ucm@ucm-Aspire-TC-606:~$ echo $f
    3 0
    4 ucm@ucm-Aspire-TC-606:~$ g=$((0||1))
    5 ucm@ucm-Aspire-TC-606:~$ echo $g
    6 1
    7 ucm@ucm-Aspire-TC-606:~$ 


        • 变量测试  shell中独有  在脚本优化中使用
        • 特点:代码精简,逻辑不好理解

    举个栗子:

  • 相关阅读:
    poj 2312 Battle City
    poj 2002 Squares
    poj 3641 Pseudoprime numbers
    poj 3580 SuperMemo
    poj 3281 Dining
    poj 3259 Wormholes
    poj 3080 Blue Jeans
    poj 3070 Fibonacci
    poj 2887 Big String
    poj 2631 Roads in the North
  • 原文地址:https://www.cnblogs.com/jxdong116/p/6196120.html
Copyright © 2011-2022 走看看