linux之bash的基础特性(四)变量,配置文件及env,printenv,export,declare,set,unset,readonly简单命令
变量
主要有本地变量,环境变量,局部变量,位置变量,只读变量,特殊变量
1.本地变量:该类变量的作用范围仅限于当前shell进程,在其他shell进程包括其子或父进程均无效
该类变量赋值方式:
1)直接赋值varName=value的形式
2)变量引用赋值varName="$varName"或varName=${varName}形式
3)命令引用赋值varName=`command`或varName=$(command)的形式
4)几种特殊符号的说明:
1>单引号''表示强引用保留引号中的内容不会因为引用变量而改变
2>双引号""表示弱引用内容会因引用变量而发生改变
3>反斜线\转义单个字符
4>反引号``表示将内容作为命令执行
2.环境变量:该类变量的作用范围仅限于当前shell进程及其子shell进程
1)声明方式:export varName=value或declare -x varName=value
2)显示环境变量:env,printenv,export三个命令都会显示而set命令会显示所有已定义的变量
3)销毁变量:unset varName
3.只读变量:一旦声名不可改变即常量constant
声名方式:readonly varName=value或declare -r varName=value
4.特殊变量:
$?表示最近的一次命令的执行状态码
$0表示命令本身的名字
$#表示传递参数的个数
$*传递的所有参数,以字符串的形式
$@传递的所有参数,以单个字符的形式
5.位置变量:指明第几个参数$1,$2,$3,...并且支持换岗操作shift [n]命令
1 #!/bin/bash 2 # Author:wang 3 # Version:0.0.01 4 # Description:测试脚本 5 # CreateTime:2019/05/13 6 echo "\$#--所有参数的个数$#" 7 echo "\$*--所有参数$*" 8 echo "\$@--所有参数$@" 9 echo "\$0--命令本身$0" 10 echo "\$?--命令执行状态码$?" 11 echo "\$1--第1个参数$1" 12 echo "\$2--所有参数$2"
换岗
#!/bin/bash 2 # Author:wang 3 # Version:0.0.01 4 # Description:Test 5 # CreateTime:2019/05/13 6 echo "\$#--所有参数的个数$#" 7 echo "\$*--所有参数$*" 8 echo "\$@--所有参数$@" 9 echo "\$0--命令本身$0" 10 echo "\$?--命令执行状态码$?" 11 echo "\$1--第1个参数$1" 12 shift 1 13 echo $1
执行后发现shift 1其实就是将第二个参数的值移到第一个参数的位置
配置文件
1.按范围来分有全局配置文件和个人配置文件
1)全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
2)个人配置文件:~/.bash_profile ~/.bashrc
2.按功能分为profile类和bashrc类
1)profile类:为交互式登录shell进程提供配置,主要是定义环境变量,执行脚本
交互式登录shell(直接通过终端输入账号密码或su - username)的读取次序:/etc/profile-->/etc/profile.d/*.sh-->~/bash_profile-->~/.bashrc-->/etc/bashrc
2)bashrc类:为非交互式登录shell进程提供配置
非交互式登录shell(su username或图形界面下打开的终端或执行脚本)的读取次序:~/.bashrc-->/etc/bashrc-->~/bash_profile-->/etc/profile.d/*.sh-->/etc/profile