有類型變量
- 我們 都知道在我們強類型編程語言中 ,我們在定義一個變量的時候,必須爲這個變量定義類型。 比如說,我們要定義一個變量爲整形,那我們可以把它定義爲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