Shell 中的变量(鸟哥的linux私房菜)

1 什么是变量?

变量就是以一组文字或者符号等,来代替一些设置或者一串保留的数据。


2 变量的显示与设置

Shell中显示变量内容可以用命令echo例如

#echo $PATH

#echo ${PATH}

其中PATH为变量名。


3 变量的设置规则

1) 变量与变量内容用一个等号来连接,并且等号两边不能有空格。

2)变量名称只能为英文字母或者数字的组合,但是变量名开头不能是数字

3)变量内容若有空格可使用单引号或者双引号括起来,但是如果双引号内有特殊字符如$,可以保持原本的特性,而单引号则视为一般字符。

4)变量内容中可用转义字符把特殊字符(如$、\、!)等变为一般字符

5)在一串命令中,还需要其它命令的结果作为指令的一部分,则可以用`命令`或者$(命令),如version=$(uname -r)

6)  若该变量为了增加变量内容时,可以用"$变量名称"或者${变量名称},如PATH="$PATH":/home/bin,PAHT=${PATH}:/home/bin(这里是大括号,与5)中小括号分开)

7)若该变量需要在其他子进程执行,则需要用export来把自定义变量变成环境变量 export 变量名称

8) 取消变量的方法:unset 变量名称,如#unset myname


4 环境变量

环境变量可以帮助我们达到很多功能,包括主文件夹的切换、提示符的显示、执行文件查找的路径等。

1)查看环境变量可以用env与set,两者区别在于set显示的是所有的变量包括环境变量与自定义变量,而env只是显示环境变量

2)常用的环境变量。

root@keen-home:~# env
SHELL=/bin/bash    <==当前用的是哪一个shell,linux 默认是/bin/bash
TERM=vt100    <==这个终端机使用的是什么环境
XDG_SESSION_COOKIE=83577dc5c66f38f7ee94b9944ee4b025-1328576498.700490-1377304982
SSH_CLIENT=192.168.46.1 62652 22 <==笔者登陆用的ssh客户端的ip地址
OLDPWD=/home/guardian <==转换身份前pwd的显示结果
SSH_TTY=/dev/pts/0
USER=root                                       <==当前用户
LS_COLORS=rs=0:di=01;34:ln=01;36:hl=44;37:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:    <==一些颜色的显示
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games    <==执行命令时的查找路径
MAIL=/var/mail/root              <==用户所取用呃mailbox位置
PWD=/root <==当前用户pwd的显示结果
LANG=en_US.UTF-8 <==当前用户的语系,比较重要,就是语言的编码

SPEECHD_PORT=7561   

HOME=/root
SHLVL=2
LOGNAME=root <==当前登陆的名称
SSH_CONNECTION=192.168.46.1 62652 192.168.46.137 22
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env      <==上一次使用的命令的最后一个参数(或者命令本身)


5 环境 变量与自定义变量

两种变量区别:子进程会继承父进程的环境变量但是不会继承父进程的自定义变量。把自己定义变量转变为环境变量的方法就是用export


6 变量的读取、数组与声明

1)变量读取用read 

read [-pt] 变量名

-p 后面可以接提示符

       -t 后面接时间

例题一:#read  -p"input your name:" name,回车,然后输入yourname,则name中将会保存该内容



2)声明变量

declare /typeset 是一样的功能,就是声明变量的类型,如果declare后面没有接任何参数,那么bash就会主动把所有的变量名称与内容调出来,就像用set一样

declare [-aixr] variable

参数:

-a :将后面名为variable的变量定义为数组

        -i :将后面名为variable的变量定义为整数变量

       -x :用法与export 一样,将ariable定义为环境变量

       -r :将变量定义为readonly类型,该变量不可被更改内容,也不能被重设


6 一些默认的设置

1)bash中,在默认环境下变量类型默认为字符串

2)bash环境中的数值运算,默认最多仅能达到整数类型


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值