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)
上一篇 2017-08-05 17:13
下一篇 2017-08-05 17:44

相关推荐

  • 详解linux磁盘管理

                           磁盘管理 设备文件 1. I/O ports:I/O设备地址 2. 一切皆文件,open(),read(),write(),close(),对设备的操作也都是通     过这…

    Linux干货 2016-08-29
  • Linux 性能监控、测试、优化工具

    Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的、简单的小工具。系统性能专家 BrendanD. Gregg 在最近的 LinuxCon NA 2014 大会上更新了他那个有名的关于 Linux 性能方面的 talk (Linux Performance Tools) 和幻灯片。    和 Br…

    Linux干货 2015-03-03
  • 马哥教育网络班22期+第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost home]# cp -r /etc/skel /home/tuser1 [root@localhost skel]# ch…

    Linux干货 2016-09-05
  • mysql配置详解-备份-主从-MHA

    目录: 1.备份和恢复 2.主从复制 3.主主复制 4.半同步复制 5.proxysql_读写分离 6.MHA 1.备份和恢复 ·mysqldump 备份: mysqldump -E -R –triggers –master-data=2 –flush-logs –single-transaction –dat…

    Linux干货 2017-08-08
  • 二.Linux博客-2016年7月21日screen、echo

    格式说明: 操作 概念 命令 说明及举例 二.screen、echo internet 因特网ethernet 以太网ctrl+alt+F1 图形界面ctrl+alt+F2-F6 字符界面 命令:who am i/who/who me i/tty/df/ifconfig/w/ halt 关机 reboot&n…

    Linux干货 2016-08-24
  • linux三剑客之awk

    awk             简介:是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能         &n…

    Linux干货 2016-12-05