自定义变量:
变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是那一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。
变量设置规则:
变量名称可以由字母、数字、下划线组成,但是不能以数字开头。
在Bash中,变量的默认类型都是字符串型,如果要进行数值元算,则必须指定变量类型为数值型。
变量用等号连接值,等号左右两侧不能有空格。
变量的值如果有空格,需要引用单引号或双引号包括。
在变量的值中,可以使用“\”转义符。
如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“$变量名”或用${变量名}包含。
如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
环境变量名建议大写,便于区分。
变量分类:用户自定义变量
环境变量:这种变量中主要保存的是和系统操作环境相关的数据
位置参数变量:这种变量主要是用来向脚本当中传递参数和数据的,变量名不能自定义,变量作用是固定的。
预定义变量:是Bash中已经定义好 的变量,变量名不能自定义,变量作用也是固定的。
自定义变量:
# name="njh is a man" 定义一个变量
[[email protected] tmp]$ name="123"
[[email protected] tmp]$ name="$name"456
[[email protected] tmp]$ echo $name
123456
[[email protected] tmp]$ name="$name"789
[[email protected] tmp]$ echo $name
123456789
[[email protected] tmp]$
变量查看:
[[email protected] tmp]$ set
set命令会查看系统中所有的变量:
变量删除:
[[email protected] tmp]$ unset name
[[email protected] tmp]$ echo $name
[[email protected] tmp]$
环境变量:
用户自定义的变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效。
设置环境变量:
export 变量名=变量值
[[email protected] tmp]$ env #查询变量
系统常见环境变量:
PATH:系统查找命令的路径,
[[email protected] tmp]# echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/njh/bin
[[email protected] tmp]#
PATH="$PATH":/root/sh PATH变量叠加
PS1:定义系统提示符的变量\d:显示日期,格式为“星期 月 日”
\h:显示简写主机名,如默认主机名“lcoalhost”
\t:显示24小时制时间,格式为:HH:MM:SS
\T:显示12小时制时间,格式为:HH:MM:SS
\A:显示24小时制时间,格式为:HH:MM
\\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\#:执行的第几个命令
\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
举例:
[[email protected] tmp]# echo $PS1
[\\[email protected]\h \W]\$
[[email protected] tmp]# PS1='[\\[email protected]\t \w]\$'
[[email protected]:41:03 /tmp]#PS1='[\\[email protected]\t \# \w]\$'
[[email protected]:41:38 14 /tmp]#PS1='[\\[email protected]\t \W]\$'
[[email protected]:41:59 tmp]#