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中独有  在脚本优化中使用
        • 特点:代码精简,逻辑不好理解

    举个栗子:

  • 相关阅读:
    jBox使用方法
    第五章 引用类型
    第四章 变量、作用域、内存问题
    第二章 在HTML中使用JavaScript
    第三章 基本概念
    第一章 JavaScript简介
    ecmall 添加自定义挂件以及解决一直loading的问题
    急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)
    委托笔记
    Oracle ORA-01461:仅可以为插入LONG列的LONG值赋值
  • 原文地址:https://www.cnblogs.com/jxdong116/p/6196120.html
Copyright © 2011-2022 走看看