shell编程:有类型的变量

Yyqingmofeige 2019-10-22

1、通过 declare 和 typeset 命令

  • declare 和 typeset 两者等价
  • declare 和 typeset 都是用来定义变量类型的
  • 下面以 declare 进行总结

2、declare 参数如下

  • -r   将变量设置为只读
  • -i   将变量设置为整数
  • -a  将变量设置为数组
  • -F  显示此脚本前定义过的所有函数及内容
  • -f   仅显示此脚本前定义过的函数名
  • -x  将变量声明为环境变量

3、举例:

例1: 声明为不可变形式, declare -r

$ var=hello

$ var=world

$ echo $var

打印出:world     // 说明 var是可变的

declare -r var=hello

$ var=world  

打印结果:-bash: var: 只读变量

例2:声明为整型, declare -i

$ num=10

$ num2=$num+20

$ echo $num2

打印出:10+20

$ expr $num + 20

打印出:30

$ num=10

$ declare -i num3

$ num3=$num+90

$ echo $num3

打印出:100

例3:显示出系统中定义的 函数名及函数体

$ declare -F

例4: 显示出系统中定义的所有函数的函数名

$ declare -f

例5:声明为数组, declare -a

$ declare -a array       // 声明一个数组

$ array=("jones" "mike" "kobe" "jordan")     // 赋值

输出数组内容:

     $ echo ${array[@]}    //  输出全部内容,打印出:jones mike kobe jordan

   $ echo ${array[0]}     // 输出数组元素下标为0的值,打印出:jones

获取数组长度:

  $ echo ${#array[@]}     // 输出数组长度,打印出:4

  $ echo ${#array[0]}     // 输出数组第0个元素的长度,打印出:5

给数组某个下标赋值:

  $ array[0]=lisi

  $ echo ${array[@]}     // 输出:lisi mike kobe jordan

给数组尾部添加一个元素:

  $ array[10]=zhangsan    // 下标必须大于数组长度 - 1,可以大很多

删除元素:

  $ unset array[2]    // 删除数组的第三个元素

  $ unset array   // 清空整个数组

分片访问:

  $ echo ${array[@]:1:3}     // 从下标为 1 的位置开始,向后取 3个元素,忽略中间的空元素,直到取够 3个元素。如果元素不足3个,则输出后面的所有元素即可。

   内容替换:

  $ array2=${array[@]/ke/KE}    // 将数组中所有 ke 替换为 KE。  

  $ echo ${array2[@]}

数组遍历:

  for v in ${array[@]}

  do

    echo $v

  done 

例6: 声明为环境变量  declare -x     

 $ declare -x num    // num 成为环境变量后,就可以在脚本中直接使用。   如果不是环境变量,则只能在这个终端里面使用。

4、取消声明的变量

declare +r

declare +i

declare +a

declare +x

相关推荐