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

猜你喜欢

转载自www.cnblogs.com/holdononedream/p/10856834.html
今日推荐