Linux declare命令介绍
Linux declare命令是bash shell的内置命令,用于声明和设置shell变量和函数的属性和值。declare命令可以用来创建不同类型的变量,如整数、数组、只读变量等,也可以用来显示和修改变量的属性,如是否为环境变量、是否可被修改等。declare命令还可以用来显示和定义shell函数。
Linux declare命令适用的Linux版本
Linux declare命令适用于所有支持bash shell的Linux发行版,如Ubuntu, Debian, CentOS, Fedora等。如果你的Linux系统没有安装bash shell,你可以使用以下命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install bash # Ubuntu, Debian
[linux@bashcommandnotfound.cn ~]$ sudo yum install bash # CentOS 7, Fedora
[linux@bashcommandnotfound.cn ~]$ sudo dnf install bash # CentOS 8, Fedora
Linux declare命令的基本语法
Linux declare命令的基本语法如下:
declare [+/-] [rxi] [变量名=值] 或 declare -f
其中,+/-
表示设置或取消变量的属性,rxi
表示变量的属性,变量名=值
表示变量的名称和赋值,-f
表示显示或定义函数。变量的属性有以下几种:
r
表示将变量设置为只读,不能被修改或删除。x
表示将变量设置为环境变量,可以被shell以外的程序使用。i
表示将变量设置为整数,可以进行算术运算。a
表示将变量设置为数组,可以存储多个值。
Linux declare命令的常用选项说明
Linux declare命令的常用选项有以下几种:
选项 | 说明 |
---|---|
-p | 显示变量的属性和值,如果指定了变量名,只显示该变量的信息,如果没有指定变量名,显示所有变量的信息。 |
-f | 显示或定义函数,如果指定了函数名,只显示或定义该函数,如果没有指定函数名,显示所有函数的信息。 |
-F | 只显示函数的名称和属性,不显示函数的内容。 |
-g | 使所有对变量的操作在全局范围内生效,即使在函数中也不会创建局部变量。 |
Linux declare命令的实例
以下是一些Linux declare命令的实例:
创建整数变量
使用-i
选项可以创建整数变量,可以对其进行算术运算。
[linux@bashcommandnotfound.cn ~]$ declare -i num # 创建整数变量num
[linux@bashcommandnotfound.cn ~]$ num=10 # 给num赋值为10
[linux@bashcommandnotfound.cn ~]$ echo $num # 显示num的值
10
[linux@bashcommandnotfound.cn ~]$ num=num+5 # 对num进行加法运算
[linux@bashcommandnotfound.cn ~]$ echo $num # 显示num的值
15
[linux@bashcommandnotfound.cn ~]$ num="hello" # 给num赋值为字符串
[linux@bashcommandnotfound.cn ~]$ echo $num # 显示num的值
0
创建数组变量
使用-a
选项可以创建数组变量,可以存储多个值,用下标访问。
[linux@bashcommandnotfound.cn ~]$ declare -a arr # 创建数组变量arr
[linux@bashcommandnotfound.cn ~]$ arr=(1 2 3 4 5) # 给arr赋值为一个序列
[linux@bashcommandnotfound.cn ~]$ echo ${arr[0]} # 显示arr的第一个元素
1
[linux@bashcommandnotfound.cn ~]$ echo ${arr[@]} # 显示arr的所有元素
1 2 3 4 5
[linux@bashcommandnotfound.cn ~]$ arr[2]="hello" # 修改arr的第三个元素
[linux@bashcommandnotfound.cn ~]$ echo ${arr[2]} # 显示arr的第三个元素
hello
创建只读变量
使用-r
选项可以创建只读变量,不能被修改或删除。
[linux@bashcommandnotfound.cn ~]$ declare -r name="Alice" # 创建只读变量name
[linux@bashcommandnotfound.cn ~]$ echo $name # 显示name的值
Alice
[linux@bashcommandnotfound.cn ~]$ name="Bob" # 尝试修改name的值
-bash: name: readonly variable # 报错,不能修改只读变量
[linux@bashcommandnotfound.cn ~]$ unset name # 尝试删除name变量
-bash: unset: name: cannot unset: readonly variable # 报错,不能删除只读变量
创建环境变量
使用-x
选项可以创建环境变量,可以被shell以外的程序使用。
[linux@bashcommandnotfound.cn ~]$ declare -x PATH="$PATH:/home/linux/bin" # 创建环境变量PATH,追加一个目录
[linux@bashcommandnotfound.cn ~]$ echo $PATH # 显示PATH的值
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/linux/bin
[linux@bashcommandnotfound.cn ~]$ env | grep PATH # 用env命令查看环境变量,可以看到PATH的值
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/linux/bin
定义函数
使用-f
选项可以定义函数,函数名后面跟一对圆括号,函数体用花括号包围。
[linux@bashcommandnotfound.cn ~]$ declare -f hello # 定义一个函数hello
hello() {
echo "Hello, world!"
}
[linux@bashcommandnotfound.cn ~]$ hello # 调用函数hello
Hello, world!
Linux declare命令的注意事项
以下是一些使用Linux declare命令时需要注意的事项:
- 如果没有指定任何选项,declare命令会显示所有变量和函数的信息,相当于执行set命令。
- 如果没有指定变量的值,declare命令只会创建变量,不会赋值,变量的值为空。
- 如果变量已经存在,使用declare命令可以修改其属性,但不会影响其值。
- 如果使用
+
选项取消变量的属性,需要注意顺序,先取消的属性会影响后取消的属性,例如,如果一个变量同时具有只读和整数属性,要想取消整数属性,必须先取消只读属性。 - 如果在函数中使用declare命令,变量默认为局部变量,除非使用
-g
选项。 - 如果输入一个不存在的命令,会提示
bash: xxx: command not found
,这是因为bash shell有一个默认的函数command_not_found_handle
来处理这种情况,你可以用declare -f command_not_found_handle
来查看或修改这个函数。
评论区