Shell的变量
Shell的变量
1.变量的获取与设置:echo、变量设置规则、unset
例:想要知道PATH的内容
[root@linux ~]#echo $variable
[root@linux ~]#echo $PATH
或者[root@linux ~]#echo ${PATH}
例:在屏幕上显示环境变量HOME与MAIL:
echo $HOME
echo $MAIL
例:要将myname变量名称的内容设置为VBird
[root@linux ~]#echo $myname
[root@linux ~]#echo myname=VBird
[root@linux ~]#echo $myname
变量设置规则:
a)变量与变量内容以等号”=”来连接;
b)等号两边不能直接接空格符
c)变量名称只能是英文字母与数字,但数字不能是开头字符;
d)若有空格符,可以使用双引号“””或单引号“’”将变量内容
结合起来,但要特别注意,双引号内的特殊字符可以保持变量
特性,但单引号内的特殊字符则仅为一般字符。
e)必要时需要以转义字符“\”将特殊符号(如Enter、$、\、空
格符、’等)变成一般符号。
f)在一串命令中,还需要通过其他命令提供的消息,可以使用这
样的方式“`command`”(请特别注意,`是键盘上数字键1左边的那个按键)
g)若变量为扩展变量内容,需以双引号及$变量名称如
“”$PATH”:/home”继续累加内容。
h)若该变量需要在其他子程序中执行,则需要用export使变量变
成环境变量,如“exportPATH”。
i)通常大写字母为系统默认变量,自行设置变量可以使用小写字
母,便于判断。
j)取消变量的方法为:“unset 变量名称”。
作如下练习,体会如何设置变量:
1:设置变量name,内容为VBird。
12name=VBird
name = VBird
name=VBird
2:接上例,变量内容设置为VBird’s name
12name=VBird’s name
name=”VBird’s name”
name=VBird\’s\ name
3:在PATH变量中“累加”:/home/dmtsai/bin目录
PATH=$PATH:/home/dmtsai/bin
PATH=”$PATH”:/home/dmtsai/bin
4:接上例,要将name的内容多出个“yes”?
name=$nameyes
name=”$name”yes
name=${name}yes
5:如何让刚设置的name=VBird可以用在下一个shell程序中?name=VBird
bash
echo $name
exit
export name
bash
echo $name
exit
6:如何进入当前核心的模块目录?
cd /lib/modules/`uname –r`/kernel
7:取消刚设置的name这个变量内容
unset name
习题:在变量的设置中,单引号与双引号的用途有什么不同?举例说明
·
2.。
Linux编程 shell中的变量
Linux编程shell中的变量shell也提供了说明和使用变量的功能。
在shell程序中,所有变量的取值都是一个字符串,shell程序采用$var的形式来引用名为var的变量的值。
在编写Linux shell脚本时,可以使用如下几种类型的变量:●环境变量它们是系统环境的一部分。
在shell程序中既可以使用shell定义的环境变量,也可以定义新的环境变量,其中的某些环境变量还能在shell程序中进行修改,例如PA TH等。
●用户变量由用户在编写shell脚本时进行定义。
在shell程序中可以按照需要使用和修改它们。
●内部变量例如由Linux提供的用于命令行上的选项(由shell作为位置参数解释)。
与环境变量不同,这些变量不能修改。
shell编程语言与其他编程语言的主要区别是:在shell程序中变量没有类型,即不需要说明一个变量是数值型还是字符型等。
1.shell定义的环境变量shell在开始执行时就已经定义了一些和系统工作环境有关的变量,用户还可以重新定义这些变量。
常用的shell环境变量如表1所示。
表1 shell环境变量2.用户变量在linux中,用户也可以根据需要定义自己的变量,定义变量时的语法规则是:变量名=变量值在定义变量时,变量名前不需要添加符号$,但是在引用变量时,则应在变量名前添加$;在给变量赋值时,等号两边一定不能留有空格,如果变量值中包含了空格,则整个字符串都要用双引号括起来。
在编写shell程序时,为了使变量名和命令名相区别,变量名最好都用大写字母表示。
有时,需要在说明一个变量并将它设置为一个特定值后就不再改变它的值,这时,可以用如下所示的命令来保证该变量的只读性:readonly 变量名在任何时候,用户定义的变量都只是当前shell的局部变量,所以,不能被shell运行的其他命令或者其他shell程序所使用;但是,如果使用export命令则可以将一个局部变量提供给shell执行的其他命令使用,其格式为:export 变量名除此之外,用户也可以在给变量赋值的同时使用export命令,其语法格式为:export 变量名=变量值在linux中,用户定义的变量由字母和下划线组成,并且变量名的第一个字符不能为数字(0~9)。
shell中变量定义及应用--(环境变量及普通变量)
shell中变量定义及应⽤--(环境变量及普通变量)shell中变量定义及应⽤1. ⾃定义环境变量1.1 设置环境变量如果想要设置环境变量,就要在给变量赋值之后或在设置变量时使⽤export命令,具体设置见下⽂的⽰例。
其实,除了export命令,带-x选项的declare内置命令也可以完成同样的功能(注意:此处不要在变量名前⾯加$)。
export命令和declare命令的格式如下:1.export 变量名=value2.变量名=value;export 变量名3.declare -x 变量名=value范例:定义环境变量并赋值export NAME=oldboydeclare -x NAME=oldboyNAME=oldboy;export------------------------------------[root@zabbix ~]# tail -1 /etc/profileexport OLDBOY='oldboy'[root@zabbix ~]# source /etc/profile[root@zabbix ~]# echo $OLDBOYoldboy[root@zabbix ~]# env|grep OLDBOYOLDBOY=oldboy1.2 让环境变量永久⽣效的常⽤设置⽂件(1)⽤户的环境变量配置对于⽤户的环境变量设置,⽐较常见的是⽤户家⽬录下的.bashrc和.bash_profile。
[root@zabbix ~]# ll /root/.bashrc -- 推荐使⽤-rw-r--r--. 1 root root 176 Dec 29 2013 /root/.bashrc[root@zabbix ~]# ll /root/.bash_profile-rw-r--r--. 1 root root 176 Dec 29 2013 /root/.bash_profile(2)全局环境变量的配置/etc/profile/etc/bashrc -- 推荐使⽤/etc/profile.d/## 若要在登录后初始化或显⽰加载内容,则把脚本⽂件放在/etc/profile.d/下即可(⽆须加执⾏权限)。
shell编程之给变量赋值的五种方法
shell编程之给变量赋值的五种方法1. Shell中的变量类型Shell中的变量可以分为环境变量、位置变量、预定义的特殊变量以及用户自定义变量、<!--[if !supportLists]-->2. <!--[endif]-->环境变量Shell中的环境变量是一类Shell预定义变量,是用于设置系统运行环境的变量,环境变量由系统统一命名。
部分系统变量的值由系统设定,部分环境变量的值可以由用户给定。
环境变量的名称由大写字母组成,常用的Shell环境变量如下所示:HOME: 用户主目录的全路径名,cd $HOME 即可切换到用户的主目录PATH:类似于windows下的路径,Shell会在里面依次寻找二进制的可执行文件。
echo $PATH可以显示当前的PATH,添加新的PATH方法$PATH=$PATH:新PATHTERM: 终端类型 echo $TERMPS1: 提示符,root用户默认为#,普通用户默认为$SHELL: Shell解释器的绝对路径LOGNAME: 登录用户的用户名UID:当前用户的UID echo $UID<!--[if !supportLists]-->3. <!--[endif]-->位置变量位置变量是根据出现在命令行上的参数的位置确定的变量,在调用Shell程序的命令行中,参数的位置定义如下所示。
$命令参数1 参数2 参数3其中 $0 对应执行的命令名$1 对应参数1$2 对应参数2$3 对应参数3(一定要搞清楚顺序!!)<!--[if !supportLists]-->4. <!--[endif]-->预定义的特殊变量预定义的特殊变量有着特殊的含义,用户不可以更改,所有的预定义变量都由“$”符号和另外一个符号组成,常用的预定义特殊变量如下所示$#:位置参数个数(不包括Shell脚本名)$*: 位置参数组成的字符串$!: 上一个后台命令对应的进程号$?: 上一个命令的退出状态,为十进制数字,如果返回为0,则代表执行成功。
shell变量运算方式
shell变量运算方式
Shell变量可以进行运算的方式有以下几种:1. 使用expr命令进行数学运算。
expr命令可以进行加减乘除、取余等基本的数学运算。
例如,可以使用
`result=(expr a + b)`来将变量a和b的值相加并将结果保存在变量result中。
2. 使用(( ))进行算术运算。
在(( ))中可以使用基本的算术运算符进行数学运算,如+、-、*、/等。
例如,可以使用`result=((a + b))`将变量a和b的值相加并将结果保存在变量result中。
3. 使用let命令进行算术运算。
let命令是Bash Shell 提供的一个内置命令,可以直接进行算术运算。
例如,可以使用`let result=a+b`将变量a和b的值相加并将结果保存在变量result中。
4. 使用declare命令进行算术运算。
declare命令可以用来声明变量的类型,同时也可以进行算术运算。
例如,可以使用`declare -i result`来声明result为整型变量,然后使用
`result=a+b`将变量a和b的值相加并将结果保存在变量result中。
5. 使用bc 命令进行高精度计算。
bc命令是一个任意精度计算工具,可以进行高精度的数学运算。
可以使用echo命令将运算表达式传递给bc命令,并使用( )将bc命令的输出保存到变量中。
例如,可以使用`result=(echo "scale=2; a + b" bc)`将变量a和b的值相加并将结果保存在变量result中,保留小数点后两位。
Linux Shell变量
Linux Shell变量Linux的shell编程是一种非常成熟的编程语言,它支持各种类型的变量,主要有三种变量类型,即用户变量、内部变量及环境变量。
用户变量是在编写shell 脚本时定义的,可以在shell程序内任意使用和修改它们。
内部变量是由系统提供的,与环境变量不同,但用户不能修改它们。
环境变量是系统环境的一部分,不必去定义它们。
可以在shell程序中使用它们,某些变量(如PATH)还能在shell中加以修改。
shell编程与其他语言的主要不同之处是,在shell编程中,变量是非类型性质的。
也就是说,不必指定变量是数字还是字符串。
1.用户变量用户定义的变量是最普通的shell 变量。
变量名是以字母或下线符开头的字母、数字及下线符序列,并且大小写字母意义不同。
例如,dir与Dir是两个不同的变量名。
变量名的长度不受限制。
给变量赋值的过程也是声明一个变量的过程。
变量的赋值很简单。
语法格式如下所示:在赋值号两边没有空格;在赋给变量的值中含有空格、制表符或换行符,要用双引号把这个字符串括起来;在同一个变量中,可以一次存放整型值,另一次也可以存放字符串。
下面分别给三上变量赋值,代码如下所示:如果要访问变量,可以通过给变量名加上前缀$(美元符)来访问变量的值。
也就是说,假设变量名为myname,那么使用$myname 就可以访问这个变量。
如果要把myname 的值分配给变量yourname,那么可以执行下面的命令:2.内部变量内部变量是Linux所提供的一种特殊类型的变量。
这类变量在程序中用来做出判断。
在shell程序内,这类变量的值是不能修改的,部分内部变量如下。
●$# 传送给shell程序的位置参数的数量。
●$? 最后命令的完成码或者在shell 程序内部执行的shell 程序(返回值)。
●$0 shell程序的名称。
●$* 调用shell程序时所传送的全部参数组成的单字符串。
下面创建一个实例,来说明内部变量的使用。
shell中特殊位置参数变量
shell中特殊位置参数变量shell中特殊位置参数变量:$0、$n、$#、$*、$@$0:获取当前执⾏shell脚本⽂件名,如果执⾏脚本包含路径,那么就包括脚本路径$n:获取当前执⾏shell脚本的第n个参数值、n=1..9,当n为0时表⽰脚本⽂件名;如果n⼤于9,则⽤⼤括号括起来,例如${10},接的参数以空格隔开$#:获取当前执⾏的shell脚本后⾯接的参数个数$*:获取当前shell脚本所有传参的参数,不加引号和$@相同;如果给$*加上双引号,例如:“$*”,则表⽰将所有的参数视为单个字符串,相当于“$1 $2 $3”$@:获取当前shell脚本所有传参的参数,不加引号和$*相同;如果给$@加上双引号,例如:“$@”,则表⽰将所有的参数视为独⽴字符串,相当于“$1“,”$2“,"$3"yao@linux:~/shells$ echo \${1..15}$1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15yao@linux:~/shells$ echo {a..z}a b c d e f g h i j k l m n o p q r s t u v w x y zyao@linux:~/shells$ echo $*I am handsome boyyao@linux:~/shells$ echo "$*"I am handsome boyyao@linux:~/shells$ echo $@I am handsome boyyao@linux:~/shells$ echo "$@"I am handsome boydirname:获取脚本的路径basename:获取脚本的名字yao@linux:~/shells$ dirname /home/yao/shells/4point1.sh/home/yao/shellsyao@linux:~/shells$ basename /home/yao/shells/4point1.sh4point1.sh。
SHELL初始:基本变量、环境变量、预定义变量、运算法
SHELL初始:基本变量、环境变量、预定义变量、运算法SHELLShell是什么是命令⾏解释器。
⽤户⽤它来向Linux内核发送请求来运⾏程序,命令要发送给Linux理解,必须要⽤到Shell。
如下图:Shell编程的作⽤服务器集群管理的时候,⽤来进⾏服务器管理。
执⾏Shell脚本或者是维护服务器,⽐如编写⼀个定时备份数据库的脚本。
例:编写⼀个在终端输出"Hello,World"的脚本1、创建某个⽂件hello.shmkdir /root/shcode //在根下创建⼀个⽬录shcodecd /root/shcode //进⼊vim hello.sh2、按照以下格式输⼊#!/bin/bash //必须有,放在第⼀⾏,是基本格式echo "Hello,World!" //⽬标语句3、赋予执⾏权限chmod u+x hello.sh4、执⾏./hello.txt //当前⽬录下执⾏/root/shcode/hello.sh //绝对路线下执⾏5、改进(去掉赋予权限环节,即代替3 4)sh hello.sh //不需要赋予权限,直接执⾏。
6、结果Hello,World!Shell基本变量定义变量名称⼀般习惯为⼤写,是规范,遵守即可。
注意:定义变量在等号两侧不能带空格,当然,以下都是写在.sh的⽂件下定义变量A=100声明静态变量readonly B=2 //此时的B是静态的了,不能unset定义指令⽤到反引号,是横排数字的最左边的键A=`date` //把今天的⽇期赋值给A,这如果没有反引号,就是把date这个单词给AA=$(date) //等效撤销变量unset A输出变量echo "A=$A"设置环境变量如果有好⼏个.sh⽂件,都要⽤到⼀个变量呢?那就,设置环境变量(全局变量)⾸先,在特定⽂件中,定义⼀个环境变量写⼊过后需要以下刷新,⽴即⽣效source之后就通⽤了。
linux中shell变量
linux中shell变量$#,$@,$0,$1,$2的含义解释:变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@所有参数列表。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#添加到Shell的参数个数$0Shell本身的文件名$1~$n添加到Shell的各参数值。
$1是第1参数、$2是第2参数…。
示例:?1 #!/bin/bash2 #3 printf "The complete list is %s\n" "$$"4 printf "The complete list is %s\n" "$!"5 printf "The complete list is %s\n" "$?"6 printf "The complete list is %s\n" "$*"7 printf "The complete list is %s\n" "$@"8 printf "The complete list is %s\n" "$#"9 printf "The complete list is %s\n" "$0"10 printf "The complete list is %s\n" "$1"11 printf "The complete list is %s\n" "$2结果:?[Aric@localhost ~]$ bash params.sh 123456 QQThe complete list is 24249The complete list isThe complete list is 0The complete list is 123456 QQThe complete list is 123456The complete list is QQThe complete list is 2The complete list is params.shThe complete list is 123456The complete list is QQHave a nice day!!!eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print $4}'` 1>/dev/null2>/dev/null命令的结果可以通过%>的形式来定义输出/dev/null 代表空设备文件> 代表重定向到哪里,例如:echo "123" > /home/123.txt1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"2 表示stderr标准错误& 表示等同于的意思,2>&1,表示2的输出重定向等同于1那么本文标题的语句:1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
shell中脚本变量和函数变量的作用域
shell 中脚本变量和函数变量的作⽤域1. shell 脚本中定义的变量是global 的,其作⽤域从被定义的地⽅开始,到shell 结束或被显⽰删除的地⽅为⽌。
#!/bin/bash ltx_func() {echo v1 v1=200 } v1=100 ltx_func echov1结果:100200解析:脚本变量v1的作⽤域从被定义的地⽅开始,到shell 结束。
调⽤函数ltx_func 的地⽅在变量v1的作⽤域内,所以能够访问并修改变量v1。
2. shell 函数定义的变量默认是global 的,其作⽤域从函数被调⽤时执⾏变量定义的地⽅开始,到shell 结束或被显⽰删除处为⽌。
函数定义的变量可以被显⽰定义成local 的,其作⽤域局限于函数内。
但请注意,函数的参数是local 的。
#!/bin/bashltx_func() {v2=200}ltx_funcecho $v2结果:200解析:注意,不是从定义函数的地⽅开始,⽽是从调⽤函数的地⽅开始。
打印命令在变量v2的作⽤域内,所以能够访问变量v2。
#!/bin/bashltx_func() {local v2=200}ltx_funcecho $v2结果:(空)解析:函数变量v2显⽰定义为local 的,其作⽤域局限于函数内。
打印命令在函数外,不在变量v2的作⽤域内,所以能够不能访问变量v2。
#!/bin/bashltx_func() {echo "param 1: $1"}ltx_func 100结果:100解析:函数参数是local 的,通过位置变量来访问。
打印命令输出函数的第⼀个参数。
3. 如果同名,shell 函数定义的local 变量会屏蔽脚本定义的global 变量。
#!/bin/bashltx_func() {echo v 1localv 1=200echo v1}v1=200ltx_funcecho $v1结果:100200100解析:global 变量v1的作⽤域从被定义的地⽅开始,到shell 结束。
一、Shell之变量的基础知识
⼀、Shell之变量的基础知识⼀、什么是变量1、什么是变量变量就是⽤⼀个固定的字符串(字符、字符+数字的组合等)替代更多、更复杂的内容,该内容可能还包含变量、路径、字符串等其它内容。
变量是暂时存储数据的地⽅及数据标记,所存储的数据是存放在内容空间中,通过正确地调⽤内存看空间中变量的名字九可以取出与变量相对应的数据。
注意变量的数据是存放在内容中,所以重启计算机,⼀般普通变量会丢失。
简单变量案例[root@node1 ~]# name="ywx"[root@node1 ~]# echo $nameywx变量的赋值⽅式:先写变量名(如上的name),紧接着是赋值符号"=",最后是变量的值(如上是ywx),赋值符号"="的左右两边⽆空格。
变量的值⼀般要加""。
2、Shell变脸的特性默认情况下,bash shell是不会区分变量类型的,其它变成语⾔如(c、c++、java等)在定义⼀个变量时需要先定义变量的类型,常见的变脸类型为整数、字符串、⼩数等。
shell变量在定义时可以不⽤去指定,当然也可以使⽤declare显⽰定义变量的类型,⼀般情况下shell变量没有这个需求。
3、变量的类型变量的类型分为环境变量(全局变量)和普通变量(局部变量)。
环境变量:也被称为全局变量,可以在创建它们的Shell及其派⽣出来的任意⼦Shell中使⽤,环境变量有可以分为⾃定义环境变量和bash内置的环境变量。
普通变量:也成为局部变量,只能⽤于在创建它们的shell函数或shell脚本中使⽤。
普通变量⼀般由开发者在开发脚本程序时创建。
⼆、环境变量1、什么是环境变量环境变量⼀般是指⽤export内置命令导出的变量,⽤于定义Shell的运⾏环境,保证Shell命令的正确执⾏。
Shell通过环境变量来确定登录⽤户名、命令路径、终端类型、登录⽬录等,所有的环境变量都是系统全局变量,可⽤于所有⼦进程中,这包括编辑器、Shell脚本和各类应⽤。
