Linux Shell 003-变量

Linux Shell 003-变量

本节关键字:Linux、Shell、变量、全局变量、系统变量
相关指令:read、echo、unset、export

变量的含义

  • 变量是用来临时保存数据的,该数据是可以变化的数据。
  • 如果某个内容需要多次使用,并且在代码中重复出现,那么可以用变量代表该内容,这样在修改内容的时候,仅仅需要修改变量的值。
  • 在代码运作的过程中,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。

变量的定义

定义变量:变量名=变量值
取消变量:unset 变量名
说明:变量名用来临时保存数据,变量值是临时的可变化的数据

变量的命名规则

  • 变量名区分大小写
  • 变量名不能有特殊符号
  • 变量名不能以数字开头
  • 等号两边不能有任何空格
  • 变量名尽量做到见名知意

变量的定义方式

基本定义方式,直接复制给一个变量
# $A与${A}的区别
A=12345
echo $A
echo ${A:2:3}

# 将命令执行结果赋值给变量
A=`hostname`
A=$(uname -r)
交互式定义变量,使用read命令

语法

read [选项] 变量名

常用选项

选项 说明
-p 定义提示用户的信息
-n 定义字符数
-s 不显示用户输入的内容
-t 定义超时时间,默认单位为秒

使用示例

$ read -p "Input your name:" name
$ read -s -p "input your password" passwd
$ read -s -n 5 -p "input your password" passwd
$ read -s -t 5 -n 5 -p "input your password" passwd
变量值来自文件,使用read命令

语法

read [选项] 变量名 < 文件名

使用示例

$ cat test
192.168.203.66 255.255.255.0
$ read ip mask < test
$ echo $ip
192.168.203.66
$ echo $mask
255.255.255.0
定义有类型变量 - 使用declare

语法

declare [选项] 变量名=变量值

常用选项

选项 说明
-i 将变量看成整数
-r 定义只读变量
-a 定义普通数组;查看普通数组
-A 定义关联数组;查看关联数组
-x 将变量通过环境导出,等价于export

使用示例

$ declare -i A=123
$ echo $A
123
$ A=hello
$ echo $A
0
$ declare -r B=hello
$ echo $B
hello
$ B=world
-bash: B: readonly variable
$ unset B
-bash: unset: B: cannot unset: readonly variable

变量的分类

本地变量

概念:当前用户自动以的变量,当前进程中有效,其他进程及当前进程的子进程无效

环境变量

概念:当前进程有效,并且能够被子进程调用(进程树 ps auxf | grep 进程名)

命令 说明
env 查看当前用户的环境变量
set 查询当前用户的所有变量
export 变量名=变量值 或者 变量名=变量值;export 变量名
全局变量

概念:全局所有的用户和程序都能调用,且集成,新建的用户也默认能调用
相关配置文件:

文件名 说明
$HOME/.bashrc 当前用户的bash信息,用户登录时读取,如:定义别名、umask、函数等
$HOME/.bash_profile 当前用户的环境变量,用户登录时读取
$HOME/.bash_logout 当前用户退出当前shell时读取,如:定义用户退出时执行的程序等
$HOME/.bash_history 用户的历史命令,history -w 保存历史记录; history -c 清空历史记录
/etc/bashrc 全局的bash信息,对所有用户都生效
/etc/profile 全局环境变量信息,对系统和所有用户都生效

注意:以上文件修改后,都需要重新加载,可以使用source命令、.命令或退出重新登录,例如:

$ source $HOME/.bashrc
$ . $HOME/.bashrc
用户登录系统读取相关文件的顺序

(1)/etc/profile
(2)$HOME/.bash_profile
(3)$HOME/.bashrc
(4)/etc/bashrc
(5)$HOME/.bash_logout

系统变量

概念:内置bash中变量,shell本身已经固定好了它的名字和作用

内置变量
内置变量 说明
$? 上一条命令的执行结果,0表示执行成功,非0表示执行失败
$0 当前执行的程序或脚本名称
$# 脚本后面跟的参数个数
$* 脚本后面所有参数,将所有参数当成一个整体输出,每个参数之间使用空格隔开
$@ 脚本后面所有参数,每个参数都是独立的,依次全部输出
$1-$9 脚本后面的位置参数,$1表示第一个位置的参数
10 − {10}- 10{n} 脚本后面的位置参数扩展,从第10个位置开始,后面的位置数字必须用大括号{}括起来(2为数字以上括起来)
$$ 当前进程的进程号
$! 当前终端,后台运行的最后一个进程的进程号
!$ 调用历史最后一条命令中的参数

补充:转义字符为 \,查看后台运行的进程指令为jobs

你可能感兴趣的:(Linux,Shell脚本,linux,运维,bash)