linux 基础(8)—— 变量

变量:命名的内存空间

1.作用数据存储格式

                        参与的运算

                        表示的数据范围

    类型:字符

                        数值:整型、浮点型

           变量命名法则:

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

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

           ③见名知义

2.bash 变量的种类

根据变量的生效范围等标准:

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

2环境变量:生效范围为当前shell 进程及其子进程局部变量,父进程无效

linux 基础(8)—— 变量


3位置变量:在脚本代码中调用通过命令行传递给脚本的参数

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

$0:  命令本身

$*:  传递给脚本的所有参数,

$@:  传递给脚本的所有参数,

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

set —  清空所有位置变量

shift #  删除前#个参数,其他参数往前移#

linux 基础(8)—— 变量

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

$*:  全部参数合为一个字符串

$@:  每个参数为独立字符串

linux 基础(8)—— 变量

4特殊变量$?, $$

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

echo $$:查询当前进程号

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

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

linux 基础(8)—— 变量

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

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

linux 基础(8)—— 变量

3.变量的赋值,查询,执行,引,删除

1变量赋值(本地变量和环境变量的区别)

本地变量:name=‘value’

环境变量:export varname=value

                 declare -x varname=value

2变量查询(本地变量和环境变量的区别)

本地变量:set (即查本地,也查环境)

环境变量:env           printenv(搜索的结果一样)

                      export      declare -x(搜索的结果一样)

linux 基础(8)—— 变量

3变量执行

若当前SHELL和子SHELL有相同的变量时:

./执行脚本时,在子SHELL下读取变量xiaoming,回到当前SHELL,当前的变量xiaoming不受影响

source  .  执行脚本时,直接在当前SHELL下,读取子SHELL下的变量xiaoming,当前SHELL的变量xiaoming被覆盖(危险)

linux 基础(8)—— 变量


4变量引用

转译:\ 完全转译    ‘ ‘ 完全转译

          “”部分转译     \ ` ! $ 4个不转译

$varname  普通引用(里边没特殊字符)

‘$varname’  或  在 $varname\  完全转译特殊字符

“$varname”  部分转译

linux 基础(8)—— 变量

“$varname”  和  ${varname} 都能表示界限

特殊:当变量值当中包含换行符,如果希望引用出的值同样包含换行符,只能使用“$varname”

linux 基础(8)—— 变量

varname=$(COMMAND)  或  varname=`COMMAND`  调用命令结果

varname=”$var”  将变量赋予其他变量

linux 基础(8)—— 变量

练习:编写脚本/root/bin/systeminfo.sh, 显示当前主机系统信息,包括主机名,IPv4 地址,操作系统版本,内核版本,CPU 型号,内存大小,硬盘大小。

linux 基础(8)—— 变量

注意:赋值变量one,two…时是赋值命令的结果,所以需要用` ` $( )

              echo时,引用one,two…等变量时,加” ” 引用变量

(5)删除变量

unset name


4.只读变量 只能声明, 但不能修改和删除

 声明只读变量:readonly name

                         declare -r name

 查看只读变量:readonly –p

linux 基础(8)—— 变量


5.退出状态

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

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

• 0 代表成功,1 255 代表失败

linux 基础(8)—— 变量

2)退出状态码

bash 自定义退出状态码

exit [n] :自定义退出状态码  多用于 if 语句

注意:脚本中一旦遇到exit 命令,脚本会立即终止;终止退出状态取决于exit 命令后面的数字

注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码


6.变量的算术运算

①bash中的算术运算: let

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

实现算术运算:

① let var=算术表达式

② var=$[算术表达式]   echo $[ ]

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

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

 declare –i var = 数值

⑥ echo ‘算术表达式’ | bc    bc当中乘方是^

linux 基础(8)—— 变量

增强型赋值:

let var+=#  自加#后赋值         let var++  自增1

let var-=#   自加#后赋值         let var–   自减1

linux 基础(8)—— 变量

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

(0)
alongalong
上一篇 2017-08-04 22:25
下一篇 2017-08-05 11:02

相关推荐

  • 基于ssl协议和openssl工具建立私有CA

    前言     要自建CA需先了解openssl工具和ssl协议还有各加密类型     ssl(Secure Socket Layer)安全套接字层当前版本为3.0,浏览器与Web服务器之间的身份认证和加密数据传输,它工作在传输层和各应用层之间,用户可以选择是否使用ssl进行传输,选择ssl协议将调用…

    Linux干货 2015-05-07
  • vim浅谈

            在Linux的世界里,绝大部分的配置文件都是以ASCII的纯文本形式存在的,所以作为一名优秀的Geek,熟练掌握一种文本编辑辑器是非常重要的。         Linux世界中的文本编辑器有很多…

    Linux干货 2015-04-27
  • Linux文件系统及文件管理相关命令

    一、Linux文件系统介绍: Linux文件系统叫做根文件系统(rootfs): root filesystem。文件系统从根目录下开始,用“ /”表示。文件和目录被组织成一个单根倒置树结构。文件系统分层遵循FHS(Filesystem Hierarchy Stantartd)。标准的Linux文件系统,文件名严格区分大小写。使用“/”分割路径。 …

    Linux干货 2016-07-29
  • Linux终端类型

      终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。   在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:   1、串行端口终端 /dev/ttySn     串行端口终端是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个…

    Linux干货 2016-10-14
  • shell脚本编程之变量详解

    什么是变量     变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。 使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。 变量:变量类型 作用:  &…

    Linux干货 2016-08-15
  • Linux基础知识之帮助命令的使用

    帮助命令的使用:   内部命令     help COMMAND   外部命令:     (1)命令自带简要格式的使用帮助        COMMOND –help     (2)使用手册 manual   &nbsp…

    Linux干货 2016-07-07