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

相关推荐

  • Bind配置和基本应用

    BIND的安装配置:    BIND: Berkeley Internet Name Domain,  ISC.org        dns: 协议      &nbsp…

    Linux干货 2017-05-30
  • linux 权限相关知识

    linux day 6     用户、组和权限 1.Linux用户:Username/UID         管理员:root, 0         普通用户:1-65535             …

    Linux干货 2016-08-08
  • 常用命令总结

    &:将要执行的进程送入后台进行执行alias:定义命令别名authconfig :对系统资源进行安全认证basename:抓取一个目录的基名basename pwdbzip2:压缩工具bzip2 case.sh case.sh.bz2    -[1-9]:指定压缩比   &nbsp…

    Linux干货 2017-04-09
  • Linux Basics–part5

    1、显示当前系统上root、fedora或user1用户的默认shell ~]# grep “^\(root\|fedora\|user1\)” /etc/passwd | cut -d: -f7 或者 ~]# egrep “^(root|fedora|user1)” /etc/passwd | cut -d:…

    Linux干货 2017-08-24
  • vim编辑器进阶

    1、vim介绍    vim(Visual Interface Improved)是一款异常强大的文本编辑器,如果大家对它的认识还停留在编辑文件,再退出的阶段的话,那就太对不起vim了,反倒不如用nano来的爽快。不过学习vim刚开始的阶段必然是痛苦的,如果想要一蹴而就,那就是你想多了。所以还需大家结合实际情况,勤加练习,认真揣摩。这里是…

    Linux干货 2016-08-11
  • 计划任务管理

        Linux系统计划任务有两种:A、一次性任务;B、定时循环任务。     一次性任务:at命令。at的安装包名字就是at,可以使用命令"yum install at"进行安装.安装完成后,启用atd服务就可以运行at命令了.运行格式为:at [opti…

    Linux干货 2016-11-27