Linux declare 命令用于声明 shell 变量。
语法
declare [+/-][rxi][变量名称=设置值] 或 declare -f
参数说明:
- +/- "-"可用来指定变量的属性,"+"则是取消变量所设的属性。
- -f 仅显示函数。
- r 将变量设置为只读。
- x 指定的变量会成为环境变量,可供shell以外的程序来使用。
- i [设置值]可以是数值,字符串或运算式。
实例
查看所有的变量和函数
由于内容太多,这里选择查看前20行
[root@localhost ~]# declare | head -n 20
A=aaaa
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:histappend:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(2)-release'
COLUMNS=102
DIRSTACK=()
EUID=0
GROUPS=()
HISTCONTROL=ignoredups
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/root
声明变量
语法格式如下
#语法格式
declare 变量名=变量值
#举例
declare b=beautiful
#获取变量值
echo $变量名
#举例
echo $b
[root@localhost ~]# declare b=beautiful
[root@localhost ~]# echo $b
beautiful
数值运算
语法格式如下
#举例
declare -i x=4*5
echo $x
#刚刚声明的i变量还可以用到数值运算中
declare -i x=x*2
declare -i x=$x*2
[root@localhost ~]# declare -i x=4*5
[root@localhost ~]# echo $x
20
[root@localhost ~]# declare -i x=x*2
[root@localhost ~]# declare -i x=$x*2
[root@localhost ~]# echo $x
80
查看变量属性
语法格式如下
declare -p 变量名
[root@localhost ~]# declare -p b
declare -- b="beautiful"
[root@localhost ~]# declare -p x
declare -i x="80"
转换普通变量为环境变量
语法格式如下
declare -x 变量名=变量值
[root@localhost ~]# declare -x b="beautiful"
[root@localhost ~]# env|grep bea
b=beautiful
查看所有的环境变量,除了 env
命令之外,还可以使用 declare -x
命令。
声明整型变量
语法格式如下
declare -i 变量名=变量值
[root@localhost ~]# declare -i num3=100
[root@localhost ~]# echo $num3
100
#赋予num3为字符串
[root@localhost ~]# num3="hello"
#再次获取发现为0,而不是赋予的字符串
[root@localhost ~]# echo $num3
0
取消变量的属性
语法格式如下
declare +i 变量名
#取消上边赋予num3的整形属性
[root@localhost ~]# declare +i num3
#再次赋值给num3字符串
[root@localhost ~]# num3="oo"
#再次获取num3的值
[root@localhost ~]# echo $num3
oo
设置变量为只读
语法格式如下
declare -r 变量名=变量值
[root@localhost ~]# declare -r c="cute"
[root@localhost ~]# echo $c
cute
[root@localhost ~]# c="ccc"
-bash: c: 只读变量
[root@localhost ~]# declare +r c
-bash: declare: c: 只读变量
注:一旦给变量设定了只读属性,那么这个变量既不能修改变量的值,也不能删除变量,
更不能用 +r 选项取消只读属性。
但是, 因为这个变量只是命令行声明的,所以只要重新登录或重启,这个变量就会消失。
声明数组变量
语法格式如下
declare -a 数组变量名='([0]="值1" [1]="值2" ... [n]="值n")'
#声明普通数组时,下标可以省略,直接显示值
[root@localhost ~]# declare -a arr1='("1" "2" "3" "4")'
#获取数组下标为1的值
[root@localhost ~]# echo ${arr1[1]}
2
#显示整个数组
[root@localhost ~]# echo ${arr1[@]}
1 2 3 4
#声明关联数组
[root@localhost ~]# declare -A array1=(["index1"]=99 ["index2"]=98 ["index3"]=97)
[root@localhost ~]# echo ${array1[index1]}
99
[root@localhost ~]# echo ${array1[index2]}
98
[root@localhost ~]# echo ${array1[index3]}
97
#显示整个数组
[root@localhost ~]# echo ${array1[@]}
99 98 97