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

相关推荐

  • N25期–第六周作业

    请详细总结vim编辑器的使用并完成以下练习题 1、 复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; %s@^[[:space:]]\{1,\}.*@#&@ 2、 复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf…

    Linux干货 2017-01-17
  • RAID(重要)

    RAID   RAID(Redundent Array of Independent Disk):独立的冗余磁盘阵列,目的是为了结合多个物理驱动器组成单个单元,提高了磁盘的性能或保证数据冗余。RAID能够防止硬件的故障导致数据丢失,但是不能防止人为操作,软件故障、恶意软件感染等造成的数据丢失,因此不能替代备份。 分类有:硬件实现RAID(一是外接式磁盘阵列柜…

    Linux干货 2016-08-30
  • vim 编辑器 定时任务 bash基础

    vim 编辑器 定时任务 bash基础

    2017-10-17
  • 第一周作业

    第一周作业 1、描述计算机的组成及其功能     计算机与操作系统:     CPU:运算器、控制器、寄存器、缓存     存储器:内存,RAM(Random Access Memory)     Input:下指令,提供数据  …

    Linux干货 2017-08-09
  • tomcat

    编程语言: 硬件级:微码编程,汇编语言 系统级:C,C++,… 应用级:Java, PHP, Python, Ruby, Perl, C#, … 程序:指令+数据 过程式编程:以指令为中心,数据服务于代码; 对象式编程:以数据为中心,指令服务于数据; java Java代码的运行:*.java(source code) –…

    Linux干货 2017-07-03
  • 磁盘及文件系统管理—第二篇

    挂载配置文件 每行定义一个要挂载的文件系统及相关属性     使用mount -a挂载/etc/fstab文件中所定义的文件系统     配置文件格式:         一共分为6个字段: &nbsp…

    Linux干货 2016-08-30