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