shell的变量功能

                                                       shell的变量功能

一、什么是变量

     变量是bash环境中非常重要的一个内容,那什么是变量呢?简单说就是让一某一个特定字符串来代表另一个比较复杂或者是容易变动的数据。

二、变量的显示与设置:echo ,unset

1变量的显示echo $变量   echo  ${变量}

 shell的变量功能

2.1变量的设置设置或者是修改某个变量的内容):用等号(=连接

变量与它的内容。

如:

shell的变量功能 

2.2变量的设置规则

1)变量与变量内容以一个等号“=”连接,如:

“myname=Vbird”

2)等号两边不能直接接空格符,错误示范如:

““myname=   Vbird”“myname=Vbird   Tsai”

3)变量名称只能是英文字母与数字,但开头字符不能是数字,错误示范如:

“2myname=Vbird”

变量命名规则如下:

a.不能使程序中的保留字:例如if, for

b.只能使用数字、字母及下划线,且不能以数字开头

c.见名知义

d.统一命名规则:驼峰命名法

4)变量内容若有空格符可使用双引号” ” “或者单引号” ‘ “将变量内容结合起来:

a.双引号内的特殊字符如$等,可以保持原本的特性,如:

shell的变量功能 

b.单引号内的特殊字符则仅为一般字符(纯文本),如:

shell的变量功能 

5)可用转义字符“\”将特殊符号(如$\!)变成一般字符。

6、在一串命令中,还需要通过其他的命令提供的信息,可以使用反单引号“`命令`”或者“$(命令)”,如:

shell的变量功能 

7、若该变量为了增加变量内容时,则可用“$变量名称${变量}累加内容,如:

shell的变量功能 

8、若该变量需要在其他子进程(子进程:在目前这个shell的情况下,去打开另一个新的shell,新的shell就是子进程)执行,则需要以export来使变量变成环境变量:

如:

shell的变量功能 

 

9.通常大写字符为系统默认变量,自行设置变量可以使用小写字符。

10.取消变量的方法为使用“unset变量名称,如:

shell的变量功能 

三、bash中变量的种类

1、环境变量:生效范围为当前shell进程及其子进程

变量声明、赋值:

                export name=VALUE

                declare -x name=VALUE

变量引用:$name, ${name}

删除变量:unset name

显示所有环境变量(环境变量的查询)

env

printenv

export

declare -x

#env  列出环境下所有环境变量与其内容

#set 可查看所有的变量(含环境变量与自定义变量)

bash内建的环境变量:PATH   SHELL   USER   UID   HOME   PWD Ü

SHLVL    LANG     MAIL     HOSTNAME   HISTSIZE    —

2、本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,    包括当前shell的子shell进程均无效

变量赋值:name=‘value’ v

 可以使用引用value:

(1) 可以是直接字串; name=“root”

 (2) 变量引用:name=”$USER”

(3) 命令引用:name=`COMMAND` name=$(COMMAND) v

 变量引用${name} $name “”

           :弱引用,其中的变量引用会被替换为变量值

           :强引用,其中的变量引用不会被替换为变量值,而保持原字符串 v

 显示已定义的所有变量:set v

 删除变量:unset name

3、局部变量:生效范围为当前shell进程中某代码片断(通常指函数)

4、位置变量:$1, $2, …来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数。

 $1, $2, …:对应第1、第2等参数,shift [n]换位置

$0: 命令本身

$*: 传递给脚本的所有参数,全部参数合为一个字符串

$@: 传递给脚本的所有参数,每个参数为独立字符串

$#: 传递给脚本的参数的个数

$@ $* 只在被双引号包起来的时候才会有差异

set — 清空所有位置变量

5、特殊变量:$?, $0, $*, $@, $#,$$

1$?  变量保存最近的命令退出状态

2)echo $$:查询当前进程号

       显示所有进程  ps -ef | grep bash   tty找到当前的终端 ,查询当前进程号

       查看进程树(-p 显示进程号)pstree -p | grep bash ,查询当前进程号 

3)echo $PPID:查询父进程进程号

4)echo $SHLVL:查询是当前SHELL是几级SHELL

6、只读变量:能声明,但不能修改和删除

声明只读变量:

                           readonly name

                            declare -r name

查看只读变量:

                             readonly –p

四、变量内容的删除、替代与替换

1、变量内容的删除与替换

变量是某个值的名称,引用变量值就称为变量替换,$符号是变量替换符号。

变量替换的两种格式:

     1.   $variable

     2.   ${variable}

例子1.

shell的变量功能 

命令替换是指将命令的标准输出作为值赋给某个变量。一种是使用反引号,另一种是利用$(),并且$(可以嵌套使用)

反引号和$()在处理双斜线\\时是有区别的,反引号将反双斜线处理为空格,$()将反双斜线处理为单斜线。

五、退出状态和退出状态码

进程使用退出状态来报告成功或失败

• 0 代表成功,1255代表失败

• $? 变量保存最近的命令退出状态

v 例如:

ping -c1 -W1 hostdown &> /dev/null

echo $

bash自定义退出状态码:

exit [n]:自定义退出状态码

注意:脚本中一旦遇到exit命令,脚本会立即终止;终止退出

状态取决于exit命令后面的数字

注意:如果未给脚本指定退出状态码,整个脚本的退出状态码

取决于脚本中执行的最后一条命令的状态码。

六、bash中的算术运算:help let

+, -, *, /, %取模(取余), **(乘方)在bc当中乘方是^

实现算术运算:

(1) let var=算术表达式

(2) var=$[算术表达式]

(3) var=$((算术表达式))

(4) var=$(expr arg1 arg2 arg3 …)   乘法时要转译* ,即\*

(5) declare –i var = 数值

(6) echo ‘算术表达式’ | bc

乘法符号有些场景中需要转义,如*

增强型赋值:

                +=,-=, *=, /=, %=

let varOPERvalue

               例如:let count+=3

                       自加3后自赋值

自增,自减:

                 let var+=1

                 let var++

                 let var

                  -=1

                 let var–

 

原创文章,作者:Light Yagami,如若转载,请注明出处:http://www.178linux.com/83904

(0)
Light YagamiLight Yagami
上一篇 2017-08-05
下一篇 2017-08-05

相关推荐

  • Liunx系统命令的使用格式

    Liunx系统命令的格式 基本格式如下:               ~]# COMMAND OPTIONS ARGUMENTS COMMAND:      发起一个命令,请求内核将某个二进…

    Linux干货 2016-10-28
  • 马哥linux 0801作业

    将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中 2.将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中 3.一个linux用户给root发邮件,要求邮件标题为"help",邮件正文如下: Hello,I am 用户名,the system version is here,ple…

    Linux干货 2016-08-04
  • Linux之bash shell脚本编程入门篇(三)之循环以及函数function的使用

    bash shell脚本编程入门篇(三)之循环 什么是循环执行?     将某代码段重复运行多次     重复运行多少次:         循环次数事先已知    &nb…

    Linux干货 2016-08-22
  • linux基础服务之DNS

    一、DNS简介 1、DNS:Domain Name System(域名系统),是互联网上IP和域名相互解析的分布式层级结构的数据库。DNS的出现能够使用户更好的更加方便的访问互联网,不用记IP地址来访问互联网,可以通过人类更容易记住域名来访问互联网。 2、DNS是一种C/S架构的服务器,客户机用于一个名字对应的地址,而服务器是为客户机提供查询的,查询由两种机…

    2017-05-29
  • bash的基本特性之globbing,IO重定向及管道

    bash的基本特性之globbing,IO重定向及管道 giobbing:文件名通配 在bash的操作环境中有一个分厂有用的功能那就是gilobbing:文件名通配,这样我们在处理数据的时候就更方便了。下面我们来罗列一些常用的通配符。(注:globbing是做整体的文件名匹配而非部分) 匹配模式:元字符 *:表示匹配任意长度的任意字符  &nbsp…

    Linux干货 2016-12-19
  • gawk 语法介绍及其实例

    gawk 语法介绍及其实例  §·awk介绍 Linux文本处理三剑客:grep  sed 和 awk 。其中grep是一种文本过滤工具,sed是文本行编辑器,而awk是一种报表生成器,就是对文件进行格式化处理的,这里的格式化不是文件系统的格式化,而是对文件的内容进行的各种排版,进而格式化显示。 在linux之上我们使用awk是GUN a…

    Linux干货 2016-09-22