ameimeng 发表于 2018-8-20 11:37:03

shell变量定义

  shell变量定义
  一,变量:
  可变化的量,有名称的内存空间(在内存中要占据空间)
  声明变量的目的是:让计算机留出内存空间来储存某一个确定类型的数据
  二,bash中变量的类型
  (1)环境变量:对当前shell及其子shell都是生效的,declare -x var=value or export var=value
  显示当前环境变量,export or printenv or env
  (2)本地变量(局部变量):仅对当前shell有效,对子shell无效。
  (3)特殊变量:通常指shell自身的变量
  (4) $?:引用上一条命令状态的返回值;
  0:成功
  1-255:失败1,2,127系统预留的
  (5),位置变量:用于引用传递过来的参数: $0, $1 ,$2 ....${11}
  (6),局部变量:作用范围可以缩小到只对一段代码有效)
  local name (定义成只对一段代码有效)
  命令别名:alias cmd_alias= ''(有些时候要带,没-,/之类就不用带'') , unlias
  三,系统上常用的环境变量:
  (1)PATH:定义命令搜索路径
  /usr/local/mysql/bin
  export PATH=$PATH:/usr/local/mysql/bin(在原来PATH变量中添加/usr/local/mysql/bin,当运行mysql命令就不需要使用绝对路径)
  hash 系统加速的缓存(shell内置变量)命令执行完会在hash中
  (2) LANG:语言变量
  /etc/sysconfig/i18n
  语言:编码规则
  DISPLAY=
  screen
  每个变量的生命的周期其关联进程,shell进程
  (3) PS1
  export 或declare -x 声明环境变量,
  改变全局在/etc/profile,改变用户在~/.bashrc
  立即生效与永久生效(写入配置文件才能永久生效)
  (4) bash环境配置文件:
  全局:
  /etc/profile,/etc/profile.d/* ,/etc/bashrc
  用户个人:
  ~/.bash_profile,~/.bashrc,~/.bash_logout
  每一个shell脚本的执行,必然是使用对应的shell程序来实现
  /bin/bash, /tmp/test.sh
  登录式shell:(先读/etc/profile-->/etc/profile.d/*-->~/.bash_profile--->~/.bashrc-->/etc/bashrc)
  1,用户登录最后创建的shell
  2, su - username
  非登录式的shell:(~/.bashrc-->/etc/bashrc--->/etc/profile.d/*)
  su username
  脚本执行
  图形界面打开的shell
  profile类:为登录式shell所用的配置文件(source=.)
  设置环境变量;
  设置命令或脚本
  bashrc类,非登录式shell所用的配置文件
  本地变量;
  命令别名:
  ()表示在子shell中执行,()里的内容表示命令
  管道的最后一个命令通常也在最后一个子shell执行
  四,在bash中不需要事先声明,如果没声明则默认都当成字符串,但是可以事先声明,
  变量的事先声明:
  (1)declace [ options ] var
  -i :整型
  -x :环境变量
  -a :数组
  -r :只读变量,值不能改变,也不能撤消
  (2)变量命名:
  1,只能包含字母,数字,下划线,并且不能以数字开头;
  2,不能与关键字冲突
  3,见名知义
  4,引号:
  单引号:''
  双引号:"" 变量替换
  反引号:`` 命令替换(把命令执行结果当作别的命令的参数) =$()
  5,变量引用:
  $var
  ${var} :如果变量值中有特殊字符或带后缀时不能省略{}
  path="$PATH"与path=${PATH}与path=$PATH(这种方式少用,因为有时$PATH中含有特殊字符时会出现问题,如含有空格之类的时候)
  三种方式效果是一样的。都是定义path的变量等于PATH的变量
  引用命令的结果两种方式:
  (1)MYUID=$(id -u root)
  (2)MYUDI=`id -u root`
  五,变量赋值
  set var_name=value (set 可以省略)
  DIR=/tmp/name
  DIR='/tmp/name'(一般情况都可以用,但是有空格之类的特殊符号时,刚必须加''或"")
  DIR="/tmp/name"(如果/tmp/name中有$则不能使用'')
  unset var_name(撤销变量) 变量名最好有大写,习惯性用法,当然不一定要
  六:变量类型
  1,决定存储类型 2,数据表示范围
  整型:
  字符型:
  布尔型:
  浮点型:
  ascii:定义了基本字符,
  byte:8bit
  七,bash如何实现命令展开;
  (1)切开;以space,tab,enter分隔
  (2)别名替换,命令行展开,$ ,{} ,()
  (3)再切开
  (4)实现重定向:>,>> ,< ,
页: [1]
查看完整版本: shell变量定义