在Bash中,每一个变量的值都是字符串,无论你给变量赋值时有没有利用引号,值都会以字符串的形式存储。
变量命名定义变量时,变量名不加$( PHP中变量须要)。变量名和等号之间不能有空格,这点和其他的编程措辞不一样。
变量名的命名规则须遵照以下规则:

#!/bin/bashuser_name="zhangsan"FILE_PATH="/bin/"_test1="123"test2="xyz"
无效的变量命名:
if="asdf"var_money_$=38?var=123username="lisi"your real name="wangwu"var_name = "zhaoliu"
利用变量
利用一个定义过的变量,只需在变量名前面加美元符号即可。已定义的变量,可以被重新定义。
例如:
#!/bin/bashuser_name="zhangsan"echo user_nameecho $user_nameecho ${user_name}user_name="lisi"echo $user_name
输出结果为:
user_namezhangsanzhangsanlisi
这里须要把稳:第二次赋值的时候,不能写成$user_name="lisi",利用变量的时候才加$。
只读变量利用readonly命令可以将变量定义为只读变量,其值不能被改变。例如:
#!/bin/bashuser_name="zhangsan"readonly user_nameuser_name="lisi"
运行脚本结果为:
user_name: readonly variable
删除变量利用unset命令可以删除变量。语法为 unset var_name ,变量被删除之后不能再次利用。unset命令不能删除只读变量。
#!/bin/bashvar_name1="zhangsan"var_name2="lisi"echo $var_name1echo $var_name2unset var_name1echo $var_name1echo $var_name2
输出结果为:
zhangsanlisilisi
有一些分外的变量会被shell环境和操作系统环境用来存储一些特殊的值,这类变量就被称为环境变量。环境变量是未在当提高程中定义,而从父进程中继续而来的变量。
用户自定义的环境变量利用export命令用来设置环境变量。例如:HTTP_PROXY,它定义了一个Internet连接该当利用哪一个代理做事器,常日设置成:
HTTP_PROXY=http://192.168.0.1:4301export HTTP_PROXY
查询自定义环境变量,env命令和set命令,差异是:set命令可以查看所有变量,env命令只能查看环境变量。
系统自带的环境变量
在默认情形下,有很多标准环境变量可供shell利用。比如:$SHELL,$PATH等。
$ echo $SHELL/bin/bash$ echo $PATH/usr/local/bin:/usr/local/sbin:/usr/local/bin/pyenv/:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
通用shell环境变量:
变量 描述BASH 包括bash命令的完全路径名。常日是/bin/bashBASH_VERSION 当前bash命令版本号EUID 当前用户的有效用户ID号FCEDIT 供fc命令利用的默认编辑器HISTCMD 当前命令在历史记录中的编号HISTFILE 保存shell历史记录的文件名(默认是.bash_history)HISTFILESIZE 历史记录文件(history file)能保存的最大命令数量HOME 当前用户的主目录HOSTTYPE 描述运行Linux系统的打算机架构MAIL 邮箱文件的位置。该文件常日是/var/spool/mail目录中的用户名OLDPWD shell先前利用的事情目录OSTYPE 定义了shell所在的操作系统PATH shell查找命令时利用的目录列表,以冒号分隔PPID bash shell父进程的 PIDPROMPT_COMMAND 如果设置的话,在显示命令行主提示符之前实行该命令PS1 shell命令行的主提示符PS2 shell命令行的次提示符PWD 当前事情目录RANDOM 返回一个0~32767的随机数(对该变量的赋值可作为随机数天生器的种子)SECONDS 自shell启动到现在的秒数(对其赋值会重置计数器)SHELL bash shell的完全路径名SHLVL shell的层级,每启动一个新的bash shell,该值增加1TIMEFORMAT 指定了shell的韶光显示格式TMOUT 可以设置为一个数值,表示shell不再接管输入的空闲韶光,以秒为单位。达到这个秒数后,shell会退出TMPDIR 目录名,保存 bash shell 创建的临时文件UID 分配给用户名的用户ID号。用户ID号存储在/etc/password文件中