bash的常用变量

一、基础知识:
1. bash变量的命名规则:以字母或下划线开头,中间由数字字母下划线组成。
2. bash是弱类型语言,变量的默认类型是字符串型。
3. 在bash中,变量可分为用户自定义变量、环境变量、位置参数变量、预定义变量
二、用户自定义变量:
1. 顾名思义,用户自己定义的变量,因为bash是弱类型语言,用户不需要声明变量的类型,直接输入[变量名=变量值]即可,系统会自动的将变量默认为字符串型。这里需要注意的是”=”(等号)两边是不能有空格的,否则系统会将变量名误认为命令,而变量名又不是命令,系统进而会报错。
2. 经常用户会用到变量的叠加:向变量的尾部添加字符串。比如向字符串变量val尾部添加字符串”123”,总共有两种办法:通过命令[val=”$val”123]和[val=${val}123]都能实现,我们一般选择第一种,即[val=”$val”123]。(因为编辑器的原因,看上去双引号和 123之间有空格,其实没有!)。
3. 对于变量,用户还有一个经常的操作是对变量的查看。查看变量的命令是[set]命令,用来查看系统中的所有变量。删除用户自定义的变量命令是[unset 变量名]。
三、环境变量
1. 环境变量和用户自定义的区别:环境变量是全局变量,而用户自定义变量是局部变量,用户自定义的变量只能在当前的shell空间中有效,而环境变量在所有shell空间中都是有效的,除非关闭shell,否则它将一直有效。用户可以通过命令[export 变量名]将用户自定义的变量设置为环境变量。通过命令[env]可以查看shell中的所有环境变量。
2. 常用的环境变量有:PS1, PATH, LANG, BASH, HOME, SHELL, LC_ALL等。对于PATH变量,用:(冒号)将两个路径之间进行分隔。变量LANG定义的是系统主语系的变量,LC_ALL定义的是整体语系的变量。
四、位置参数变量:
1. 作用:向脚本传递参数变量。比如,在命令行输入:脚本名 参数1 参数2 参数3,用户可以通过位置参数变量将参数1,参数2,参数3送入脚本内部供脚本使用,使用的办法是用$n代替,其中n表示数字0,1,2,3。$0 表示脚本名,$1表示参数1,$2 表示参数2,$3表示参数3。如果n大于9,我们需要将两位甚至3位数字用大括号括起来,比如第十个参数的表示方法是${10},第十一个参数表示方法是${11},第一百个参数表示方法是${100}。
2. 除了表示参数位置的变量外,bash还用了三个特殊的字符来命名三个有特殊含义的变量,分别是:#, *, @。$#表示命令后面所跟的参数个数。$*和$@都是输出所有参数,不同的是$*是一次性将所有参数看作一个完整的字符串输出,也就是说输出一个完整的参数字符串”参数1 参数2 参数3”,而$@是将参数一个一个的输出,先输出参数1,再输出参数2,最后输出参数3。举例:若循环变量是$*的for循环,循环体将执行一次,若循环变量是$@,循环体将执行三次。
3. 预定义变量:除了变量#, *, @外,bash还提供了三个特殊字符来表示特殊含义的变量,它们分别是:?, $, !(感叹号),?(问号)变量存储的是上一个命令的运行状态,如果值为0,则表示上一个命令正确执行,若为非0,则表示上一个命令错误执行,我们可以通过$?取出变量?(问号)中的值。变量$存储的是当前进程的PID号,可通过\$\$取出该进程的PID号。变量!(感叹号)存储的是后台运行的最后一个进程的PID号,可通过\$!取出该变量的值。
若有不对之处,敬请指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章