标签:变量
1.什么是变量
一句话:变量即在程序运行过程中它的值是允许改变的量。
2.变量作用
1数据的存储格式
2参与的运算
3表示的数据范围
3.变量命名规则
1 命名要见名知意(命名的时候一定要注意,不能随便起用变量名,尽量不要出现像1,2,3,A,B等一些简单的字母或数字,一旦这个变量长时间不看,过来一段时间就不知当初为什么会定义这个变量了)
2 遵守命名规则(可以使用数字,下划线,字母作为命名,需要记住的是不能用数字作为变量名开头)
3 不能以程序中保留的字作为变量名(例如:PATH, SHELL, USRE,UID, HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1)
4 使用“驼峰命名法”(小驼峰法:变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。大驼峰法:相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。)
#小驼峰命名法 [root@localhost ~]# dateUserName=liaoxz #大驼峰命名法 [root@localhost ~]# DataUserName=liaoxz
4.变量种类
(1)本地变量
本地变量定义:
变量名=变量值
[root@localhost ~]# user1=liaoxz
变量调用
$变量名 ${变量名}
#使用echo查看变量 [root@localhost ~]# echo $user1 liaoxz
取消变量
#语法: unset 变量名 [root@localhost ~]# unset user1 [root@localhost ~]# user1 bash: user1: command not found...
查看变量
export
env
printenv
set
[root@localhost ~]# export [root@localhost ~]# env [root@localhost ~]# printenv [root@localhost ~]# set
本地变量的应用范围
#定义完后在本地直接查看,是可以调用的 [root@localhost ~]# user1=liaoxz [root@localhost ~]# echo $user1 liaoxz [root@localhost ~]# #新打开个终端再调用,没有查看到值 [root@localhost ~]# echo $user1 #下面以数状来查看下当前的进程 #pstree 进程查看工具,使用树状查看当前进程状态 [root@localhost ~]# pstree systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─2*[abrt-watch-log] ├─abrtd ├─accounts-daemon───2*[{accounts-daemon}] ├─alsactl ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} │ └─3*[{at-spi-bus-laun}] ├─at-spi2-registr───{at-spi2-registr} ├─atd ├─auditd─┬─audispd─┬─sedispatch │ │ └─{audispd} │ └─{auditd} ├─avahi-daemon───avahi-daemon ├─caribou───2*[{caribou}] ├─colord───2*[{colord}] ├─crond ├─cupsd ├─2*[dbus-daemon───{dbus-daemon}] ├─dbus-launch ├─dconf-service───2*[{dconf-service}] ├─dnsmasq───dnsmasq ├─firewalld───{firewalld} ├─gdm─┬─Xorg │ ├─gdm-session-wor─┬─gnome-session─┬─gnome-settings-───4*[{gnome-settings-}] │ │ │ ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}] │ │ │ │ │ ├─ibus-engine-sim───2*[{ibus-engine-si+ │ │ │ │ │ └─2*[{ibus-daemon}] │ │ │ │ └─6*[{gnome-shell}] │ │ │ └─3*[{gnome-session}] │ │ └─2*[{gdm-session-wor}] │ └─3*[{gdm}] ├─2*[gdm───2*[{gdm}]] ├─goa-daemon───3*[{goa-daemon}] ├─goa-identity-se───2*[{goa-identity-se}] ├─gssproxy───5*[{gssproxy}] ├─gvfs-afc-volume───2*[{gvfs-afc-volume}] ├─gvfs-goa-volume───{gvfs-goa-volume} ├─gvfs-gphoto2-vo───{gvfs-gphoto2-vo} ├─gvfs-mtp-volume───{gvfs-mtp-volume} ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}] ├─gvfsd───{gvfsd} ├─ibus-x11───2*[{ibus-x11}] ├─ksmtuned───sleep ├─libvirtd───15*[{libvirtd}] ├─login───bash ├─lsmd ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─mission-control───2*[{mission-control}] ├─packagekitd───2*[{packagekitd}] ├─pulseaudio───2*[{pulseaudio}] ├─rsyslogd───2*[{rsyslogd}] ├─rtkit-daemon───2*[{rtkit-daemon}] ├─smartd ├─sshd─┬─sshd───bash───pstree#这是当前使用的bash │ └─sshd───bash#这是我新开的一个连接终端,发现是新开启的一个bash。 ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] ├─udisksd───4*[{udisksd}] ├─upowerd───2*[{upowerd}] ├─vmtoolsd───{vmtoolsd} └─wpa_supplicant #切换一下当前shell再使用echo查看变量 [root@localhost ~]# csh [root@localhost ~]# echo $user1 user1: Undefined variable. #切换shell后不能查看变量 [root@localhost ~]# pstree systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager─┬─dhclient │ └─2*[{NetworkManager}] ├─2*[abrt-watch-log] ├─abrtd ├─accounts-daemon───2*[{accounts-daemon}] ├─alsactl ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} │ └─3*[{at-spi-bus-laun}] ├─at-spi2-registr───{at-spi2-registr} ├─atd ├─auditd─┬─audispd─┬─sedispatch │ │ └─{audispd} │ └─{auditd} ├─avahi-daemon───avahi-daemon ├─caribou───2*[{caribou}] ├─colord───2*[{colord}] ├─crond ├─cupsd ├─2*[dbus-daemon───{dbus-daemon}] ├─dbus-launch ├─dconf-service───2*[{dconf-service}] ├─dnsmasq───dnsmasq ├─firewalld───{firewalld} ├─gdm─┬─Xorg │ ├─gdm-session-wor─┬─gnome-session─┬─gnome-settings-───4*[{gnome-settings-}] │ │ │ ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}] │ │ │ │ │ ├─ibus-engine-sim───2*[{ibus-engine-si+ │ │ │ │ │ └─2*[{ibus-daemon}] │ │ │ │ └─6*[{gnome-shell}] │ │ │ └─3*[{gnome-session}] │ │ └─2*[{gdm-session-wor}] │ └─3*[{gdm}] ├─2*[gdm───2*[{gdm}]] ├─goa-daemon───3*[{goa-daemon}] ├─goa-identity-se───2*[{goa-identity-se}] ├─gssproxy───5*[{gssproxy}] ├─gvfs-afc-volume───2*[{gvfs-afc-volume}] ├─gvfs-goa-volume───{gvfs-goa-volume} ├─gvfs-gphoto2-vo───{gvfs-gphoto2-vo} ├─gvfs-mtp-volume───{gvfs-mtp-volume} ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}] ├─gvfsd───{gvfsd} ├─ibus-x11───2*[{ibus-x11}] ├─ksmtuned───sleep ├─libvirtd───15*[{libvirtd}] ├─login───bash ├─lsmd ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─mission-control───2*[{mission-control}] ├─packagekitd───2*[{packagekitd}] ├─pulseaudio───2*[{pulseaudio}] ├─rsyslogd───2*[{rsyslogd}] ├─rtkit-daemon───2*[{rtkit-daemon}] ├─smartd ├─sshd─┬─sshd───bash───csh───pstree#新开的csh是属于bash子shell │ └─sshd───bash ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───4*[{tuned}] ├─udisksd───4*[{udisksd}] ├─upowerd───2*[{upowerd}] ├─vmtoolsd───{vmtoolsd} └─wpa_supplicant
总结:本地变量只作用于当前的shell,在子shell进程和其他shell进程不生效,在当前shell终止的时候这个变量也就结束了他的使命。
(2)环境变量
环境变量赋值
export 变量名=值
declare -x 变量名=值
[root@localhost ~]# declare user2=lxz [root@localhost ~]# export user1=liaoxz
变量调用
$变量名 ${变量名}
[root@localhost ~]# echo $user1 liaoxz [root@localhost ~]# echo $user2 lxz [root@localhost ~]#
取消变量
unset 变量名
[root@localhost ~]# unset user1 [root@localhost ~]# user1 b
查看变量
export
env
printenv
set
[root@localhost ~]# export |grep user1 declare -x user1="liaoxz" [root@localhost ~]# env [root@localhost ~]# printenv [root@localhost ~]# set
环境变量的应用范围
#在当前shell为bash定义一个环境变量 [root@localhost ~]#pstree ├─sshd─┬─sshd───bash───pstree │ └─sshd───bash [root@localhost ~]# export user1=liaoxz [root@localhost ~]# echo $user1 liaoxz #在当前shell能查看,我再在此shell下新开一个子bash shell [root@localhost ~]#bash [root@localhost ~]#pstree ├─sshd─┬─sshd───bash───bash───pstree#在当前shell下新开了一个bash新进程 │ └─sshd───bash [root@localhost ~]# echo $user1 liaoxz #使用echo可查看 [root@localhost ~]# echo $user1 #在新开的终端中用echo查看不了
总结:环境变量应用于当前shell和其所有子shell,因为新开的终端是属于新的shell,所以,不是同一个父shell是不能作用的。
(3)只读变量-常量
只读变量赋值
declare -r 变量名=值
readonly 变量名=值
变量调用
$变量名 ${变量名}
查看变量
export
env
printenv
set
只读变量的应用范围
#只读不能删不能改程序退出不在生效 [root@localhost ~]# readonly user4=ll [root@localhost ~]# echo $user4 ll [root@localhost ~]# unset user4 bash: unset: user4: cannot unset: readonly variable #默认作用于当前shell,可以使用和环境比那里一起使用,作用与当前shell及其子shell
(4)位置变量
位置变量定义
#位置变量:在脚本代码中调用通过命令行传递给脚本的参数 $1:对应第1参数,数字自定义,数字几就是第几参数 $0: 命令本身 $*: 传递给脚本的所有参数,全部参数合为一个字符串 $@: 传递给脚本的所有参数,每个参数为独立字符串 $#: 传递给脚本的参数的个数 $@ $* 只在被双引号包起来的时候才会有差异
#实例证明在后续【bash脚本用法】上传博客后指定链接
标签:变量
原文地址:http://snowbamboo1.blog.51cto.com/9291858/1837434