博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell变量
阅读量:4653 次
发布时间:2019-06-09

本文共 5803 字,大约阅读时间需要 19 分钟。

  变量来源于数学,是计算机语言中能存储计算结果或能表示值的抽象概念。变量可以通过变量名来访问。

(1).shell变量的设置规则

  1.变量名通常由大小写字母、数字和下划线(_)组成,但不能以数字开头

  2.通过等号(=)为变量分配值,等号两边不能有空格

  3.变量存储的数据类型是整数值和字符串值

  4.在对变量赋于字符串值时,建议使用引号将其包裹。如果字符串中存在空格,请一定要使用单引号或双引号将整个内容包裹。注意:单引号里的内容原封不动的输出,双引号里有变量的调用则会调用变量

[xf@xuexi ~]$ Var=1[xf@xuexi ~]$ Var1="$Var"[xf@xuexi ~]$ Var2='$Var'[xf@xuexi ~]$ echo $Var11[xf@xuexi ~]$ echo $Var2$Var

  5.要对变量进行调用时,在变量名前加美元符号$

  6.如果需要增加变量的值,那么可以进行变量值的叠加。不够变量需要用双引号包含"$变量名"或${变量名}

[xf@xuexi ~]$ VAR1=mysql[xf@xuexi ~]$ echo $VAR1mysql[xf@xuexi ~]$ echo ${VAR1}db.logmysqldb.log[xf@xuexi ~]$ echo "$VAR1"db.logmysqldb.log[xf@xuexi ~]$ echo $VAR1db.log    //如果直接写有可能会输出错误内容.log

(2).变量的分类

按照变量的作用可以分为4类:

  1.环境变量:这种变量中主要保存的是与系统操作环境相关的数据,通常都是大写字母

[xf@xuexi ~]$ env    //当前用户的环境变量,系统设置好的,不需要手动设置,可以拿来直接用XDG_VTNR=1SSH_AGENT_PID=8320XDG_SESSION_ID=1HOSTNAME=xuexiIMSETTINGS_INTEGRATE_DESKTOP=yesVTE_VERSION=5202TERM=xterm-256colorSHELL=/bin/bashXDG_MENU_PREFIX=gnome-HISTSIZE=1000GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/a06cda42_b399_47cd_bc6b_213b4228b9a7IMSETTINGS_MODULE=IBusUSER=xfLS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:GNOME_TERMINAL_SERVICE=:1.110SSH_AUTH_SOCK=/run/user/1000/keyring/sshSESSION_MANAGER=local/unix:@/tmp/.ICE-unix/8140,unix/unix:/tmp/.ICE-unix/8140USERNAME=xfGNOME_SHELL_SESSION_MODE=classicPATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/xf/.local/bin:/home/xf/binMAIL=/var/spool/mail/xfDESKTOP_SESSION=gnome-classicQT_IM_MODULE=ximXDG_SESSION_TYPE=x11PWD=/home/xfXMODIFIERS=@im=ibusLANG=zh_CN.UTF-8GDM_LANG=zh_CN.UTF-8GDMSESSION=gnome-classicHISTCONTROL=ignoredupsXDG_SEAT=seat0HOME=/home/xfSHLVL=2GNOME_DESKTOP_SESSION_ID=this-is-deprecatedXDG_SESSION_DESKTOP=gnome-classicLOGNAME=xfXDG_DATA_DIRS=/home/xf/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-W6Hx6GcXU8,guid=6eea49fbec14c47cd3740c5e5ccbf4eaLESSOPEN=||/usr/bin/lesspipe.sh %sWINDOWPATH=1XDG_RUNTIME_DIR=/run/user/1000DISPLAY=:0XDG_CURRENT_DESKTOP=GNOME-Classic:GNOMECOLORTERM=truecolorXAUTHORITY=/run/gdm/auth-for-xf-6FYINa/database_=/usr/bin/env

  命令(命令本质就是可执行的脚本)就是前往PATH环境变量下查找是否存在,有的则执行,没有会报错

[xf@xuexi ~]$ which pwd/usr/bin/pwd[xf@xuexi ~]$ ll /usr/bin/pwd-rwxr-xr-x. 1 root root 33280 10月 31 2018 /usr/bin/pwd

  2.用户自定义变量

[xf@xuexi ~]$ VAR2=123[xf@xuexi ~]$ echo $VAR2123

  3.位置参数变量:这种变量主要用来向脚本当中传递参数或数据,变量名不能自定义,作用是固定的。$0获取当前shell脚本文件的文件名,$n($1,$2,$3....)获取第n个参数,n大于9时使用${n}(${10})。

[xf@xuexi ~]$ cat a.sh #!/bin/bashecho "$0"echo "$1"echo "$3"[xf@xuexi ~]$ sh a.sh 1 2 3a.sh13[xf@xuexi ~]$ sh /home/xf/a.sh 1 2 3/home/xf/a.sh13[xf@xuexi ~]$ sh a.sh 1 3 2a.sh12

  4.预定义变量:是bash中已经定义好的变量,变量名不能自定义,作用也是固定的

按照变量的作用范围可以分为2类:

  1.全局变量:是环境变量,其值不随shell脚本的执行结束而消失

  2.局部变量:shell程序内部定义的,其使用范围仅限于定义它的程序,包括用户自定义变量、位置变量和预定义变量。

 (3).删除变量

[xf@xuexi ~]$ Var=1[xf@xuexi ~]$ echo $Var1[xf@xuexi ~]$ unset Var[xf@xuexi ~]$ echo $Var//这里有空行

(4).添加环境变量

  临时添加PATH环境变量,只能在当前shell下使用

[xf@xuexi ~]$ echo $PATH/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/xf/.local/bin:/home/xf/bin[xf@xuexi ~]$ PATH=/home/xf:$PATH[xf@xuexi ~]$ echo $PATH/home/xf:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/xf/.local/bin:/home/xf/bin[xf@xuexi ~]$ cat a.sh #!/bin/bashecho "hello world"[xf@xuexi ~]$ ll a.sh -rwxrwxr-x. 1 xf xf 31 5月   3 19:48 a.sh[xf@xuexi ~]$ cd /  //在任何地方都可以直接运行了,这是把这个文件当成命令使用了[xf@xuexi /]$ a.shhello world

  临时添加PATH环境变量,但允许任何shell使用,此时需要使用到export,export PATH=$PATH:/home/xf。

  永久添加环境变量需要将变量写入到配置文件,其中/etc/profile是系统全局变量和登录系统的一些配置;/etc/bashrc是shell全局自定义配置文件,用于自定义shell;/root/.bashrc用于单独自定义某个用户的bash;/root/.bash_profile用户单独自定义某个用户的系统环境。运行顺序:/etc/profile>>/etc/bashrc>>~/.bashrc>>~/.bash_profile

[root@xuexi ~]# vim /etc/profile[root@xuexi ~]# tail -1 /etc/profileVar="hello world"  //添加一个新的变量[root@xuexi ~]# echo $Var  //此处需要刷新或重新登录或. ./etc/profile刷新,否则无法使用[root@xuexi ~]# source /etc/profile  //使用source刷新环境变量[root@xuexi ~]# echo $Varhello world

(5).特殊变量

$#是传递到脚本的参数的个数

$*是以一个字符串显示所有向脚本传递的参数

$$是当前进程的进程号PID

$?显示上一条命令的退出状态,0表示没有错误,其他都有错误

$!是后台运行的最后一个进程的进程号PID

转载于:https://www.cnblogs.com/diantong/p/10805727.html

你可能感兴趣的文章
嗯---NOI水题集合之:阿狸的打字机
查看>>
WPF拖动DataGrid滚动条时内容混乱的解决方法
查看>>
读jQuery之六(缓存数据)
查看>>
sharepoint_study_1
查看>>
微博什么技术啊……还说支持八个明星并发出轨,结果…
查看>>
实验6 结构体、共用体与枚举
查看>>
pip 批量更新
查看>>
javascript简史
查看>>
java 5 Lock
查看>>
mybatis之动态SQL
查看>>
HTML基础
查看>>
MYSQL 常用语句保存
查看>>
json和对象相互转化方法
查看>>
BZOJ 4173: 数学
查看>>
1289 大鱼吃小鱼 1305 Pairwise Sum and Divide 1344 走格子 1347 旋转字符串 1381 硬币游戏...
查看>>
利用Scrapy爬取自己的CSDN博客
查看>>
易语言运算命令的解释(位取反、位于、位或、位异或)
查看>>
真人测试网站用户体验的超棒在线服务 - Peek by UserTesting
查看>>
Rstudio 实现 爬虫 文本分词 个性化词云设计--我爱中国我爱党
查看>>
表单验证提交——submit与button
查看>>