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

相关推荐

  • 8-8 sed 练习

    8-8 作业 1. 如何设置tab缩进为4个字符? 2. 复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log; 3. 删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号;

    Linux干货 2016-08-12
  • 磁盘管理

                              磁盘管理 fdisk分区管理工具 :fdisk ,parted,sfdisk      fdisk:对于一块硬盘来讲,…

    Linux干货 2015-10-14
  • ☞{ 编译内核;自制linux; }

    编译内核、自制linux 自制简单的linux 前提约定 CentOS 6.8 , Kernel-2.6.32-642.el6.x86_64 基于GRUB – 0.97 / 分区与 boot 分区独立, /boot 分区 100M+ ,/ 根分区看具体需求,此处为 1G Vmware 12.1,新建一个Li…

    Linux干货 2016-09-15
  • Linux 目录结构

    Linux 目录结构 1.     前言     Linux 是一种开源的,且非常流行的操作系统,发行版本众多。为了统一和规范linux系统的主要目录名及其用途,提出了FHS标准,FHS是File Hierarchy Standard的简写。Linu…

    Linux干货 2015-07-26
  • linux命令速记技巧

    linux命令速记技巧 linux命令有一定的命名规则,一个正常的coder在编码的过程中都会考虑命名的语义化,开发者对函数的命名一定也尽量遵循这个规律.了解目录所对应的英文全称有助于自己的记忆,理解记忆获得知识的留存率要远大于死记硬背.如果英文基础太差,小编建议先学好英文基本功再来学习这些命令. 命令的中文对照 命令 英文全称 中文释义 ls list 列…

    Linux干货 2017-03-25
  • 马哥教育网络班21期-第五周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符…

    Linux干货 2016-08-08