侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux declare命令详解:如何声明和设置变量和函数(附实例教程和注意事项)

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来查看或修改这个函数。
0

评论区