有类型变量
- 我们 都知道在我们强类型编程语言中 ,我们在定义一个变量的时候,必须为这个变量定义类型。 比如说,我们要定义一个变量为整形,那我们可以把它定义为int型 ,或者说,定义一个变量为 字符串型,那我们可以把它定义为 string型。若果我们想把一个变量定义为一个日期类型,那我们必须把它定义为date类型。
也就是说我们在引用变量之前,必须先定义变量类型
- 这里由于我们shell 编程是一种弱类型编程语言,所以,在引用前,并不需要特意去定义变量类型 。其实,shell本身也是支持提前声明变量类型的,和强类型的编程语言的方式不同,通过declare 和typeset命令去声明
declare命令参数表
参数 | 含义 |
---|---|
-r | 将变量设置为只读 |
-i | 将变量设置为整数 |
-a | 将变量定义为数组 |
-f | 显示此脚本前定义过的所有函数及内容 |
-F | 仅显示此脚本前定义过的函数名 |
-x | 将变量声明环境变量 |
例子:
- var1 是可以修改的变量
[root@localhost ~]# var1="hello world"
[root@localhost ~]# echo $var1
hello world
[root@localhost ~]# var1="hello"
[root@localhost ~]# echo $var1
hello
[root@localhost ~]#
- 将变量var1 设置只读
[root@localhost ~]# declare -r var1 //将var1 设置只读
[root@localhost ~]# var1="hello python"
-bash: var1: readonly variable
[root@localhost ~]#
-
declare -r #声明变量为整数型
[root@localhost ~]# num1=10 [root@localhost ~]# num2=$num1+20 [root@localhost ~]# echo $num2 10+20 [root@localhost ~]# expr $num1 + 10 20 [root@localhost ~]# declare -i num3 [root@localhost ~]# num3=$num1+90 [root@localhost ~]# echo $\num3 $num3 [root@localhost ~]#
-
定义数组 declare -a
[root@localhost ~]# declare -a array
[root@localhost ~]# array=("jones" "mike" "kobe" "jordan")
[root@localhost ~]# echo $array
jones
[root@localhost ~]# echo ${array[@]}
jones mike kobe jordan
[root@localhost ~]# echo ${array[0]}
jones
[root@localhost ~]# echo ${array[1]}
mike
[root@localhost ~]# echo ${#array[@]}
4
[root@localhost ~]#
- 将变量声明为环境变量 declare -x
[root@localhost ~]# vi test.sh
#!/bin/bash
#
echo "$num3"
[root@localhost ~]# sh test.sh
[root@localhost ~]# declare -x num3 只有声明后,才可以调用
[root@localhost ~]# sh test.sh
10
[root@localhost ~]#
取消声明的命令
declare +r
declare +i
declare +a
declare +X