shell 脚本--有类型变量

declare和typeset命令两者是等价的,declare、typeset命令都是用来定义变量类型的

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

案例演示

-r 只读类型

#声明一个变量 var1 变量可被重新复制
~$ var1="Hello world"
~$ var1="Hello C++"
~$ echo $var1
Hello C++



#声明一个变量 var1 变量只读 不可被赋值
~$ declare -r var2
~$ var1="Hello Java"
~$ declare -r var1
~$ var1="Hello Java"
bash: var1: 只读变量

-i 整数类型 

~$ num1=10
~$ num2=$num1+20
~$ echo $num2
10+20



#将num2声明为整型变量
~$ declare -i num2
~$ num2=$num1+20
~$ echo $num2
30

-f 函数类型 

# -f 是 查看函数名和 函数体,系统自己定义好的一些函数 我们可以直接使用的
~$ declare -f
__expand_tilde_by_ref () 
...
~$ 



# -f 是只显示函数名 没有 函数体
~$ declare -F
~$ declare -F
declare -f __expand_tilde_by_ref
...
~$ 

关于 declare -a 数组的长度和修改数组

输出数组内容:
            echo ${array[@]}     全部输出
            echo ${array[i]}     输出索引为1的内容

获取数组长度:
            echo ${#array}       数组内的元素个数
            echo ${#array[2]}    数组内下标索引为2的元素长度

给数组某个下赋值:
            array[0]="lily"      给数组下标索引为1的元素赋值为lily
            array[20]="hanmeimei" 给数组尾部添加一个新元素

删除元素:
            unset array[2]       清除元素
            unset array          清空整个数组

分片访问:   
            ${array[@]:1:4}  显示数组下标索引从1开始 到3 的 3个元素
        
内容替换:
            ${array[@]/an/AN}  将数组中所有元素包含an替换为AN

数组的遍历:
            for v in ${array[@]}
                do
                    echo $v
                done            

-x 将变量声明为环境变量,可以在脚本中引用

#!/bin/bash

echo $num5

写一个脚本 如下,此时定义了一个变零 num5=10  运行脚本为空

如果将num5 声明为全局变零 

~$ declare -x num5

运行脚本为 10

猜你喜欢

转载自blog.csdn.net/ChaoLi_Chen/article/details/102764405