Shell 有类型变量
1、通过 declare 和 typeset 命令
2、declare 参数如下
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 $?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 ? 总结:向数组array [0,1,2,3,4]末尾添加元素,如果数组长度为5,添加新元素 7的时候下标指向的是 7,那么数组为 [0,4,7],这时候数组长度为6,此时 array[5] 和 array[6] 值为空,array[7] 的值为7。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |