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
下一篇 2017-08-05

相关推荐

  • N25-第九周作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别统计这两类用户的个数;通过字符串比较来实现; #!/bin/bash     echo “可登录类型有有$(awk -F: ‘/[^\<nologin\>…

    Linux干货 2017-03-11
  • 对软连接进行cp,rm

    软连接的原理 图1 由 1 号inode 读取到连结档的内容仅有档名,根据档名链接到正确的目录去取得目标文件的inode , 最终就能够读取到正确的数据了。 软连接的使用 创建软连接,从下图可以看出软连接的大小是11个字节,对比/etc/passwd和passwdlns可知他们不是同一个文件。 在复制cp的时候对软连接的处理 对指向文件的的软连接:使用cp …

    Linux干货 2017-02-25
  • 文件管理命令及文件名通配

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录管理类的命令 mkdir 用法: mkdir [选项]… 目录… 选项:  -p 递归创建多个目录 实例: [root@centos7 ~]# mkdir -p /tmp/jerry/2016/…

    Linux干货 2016-11-06
  • Nginx 进阶 (ssl、fpm、rewrite、cache配置等)

    Nginx(与ssl结合配置https网站、rewrite,fastcgi配置详解) 前言 前面已经介绍过Nginx的一些基础概念,还有几个比较重要的模块:利用ssl给会话加密,利用rewrite功能灵活改写访问结果,以及利用fastcgi与php模块结合等等。 一、配置https网站 1、自建CA (1)生成私钥文件 mkdir -p /etc/pki/C…

    Linux干货 2016-12-26
  • Nginx 代理和缓存

    一 实验环境 Nginx 版本:nginx-1.8.1 Nginx代理服务器WAN:192.168.1.5 LAN:172.16.2.1 Web1:172.16.2.2 Web2:172.16.2.3 1.  配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器 2.      …

    Linux干货 2016-12-05
  • N25第六周总结:vim编辑器详解

    vim编辑器 一、      大纲 1、   什么是vim编辑器 2、   为什么要使用vim编辑器 3、   vim编辑器能实现哪些功能 4、   vim编辑器详解   二、   &nbs…

    Linux干货 2017-01-12