Linux Shell基础-Bash变量

一 用户自定义变量
1 变量定义
name=”shen chao”
注意 变量名不能以数字开头,可以不加双引号,但如果有空格,就必须加双引号或单引号
2变量叠加

如果需要增加变量的值,那么可以进行变量值的叠加,形式可以是

Linux Shell基础-Bash变量_第1张图片
3 查看变量set
Linux Shell基础-Bash变量_第2张图片
4 删除变量unset 变量名
比如unset aa

二 环境变量
1 环境变量是什么
用户自定义变量只能在当前Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell中生效,如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效
什么事Shell的子Shell呢,我们可以通过pstree来查看下
Linux Shell基础-Bash变量_第3张图片
我们看到中间一行 -login-bash-pstree
如果我输入命令csh,就是切换到当前Shell的子Shell csh

再用pstree看下
这里写图片描述
如果想退出当前子Shell用exit
这里写图片描述
再来pstree看下
这里写图片描述
恢复到之前的Shell了

2 设置环境变量
export 变量名=变量值 ,比用户自定义变量多了一个export
env查询环境变量
unset 变量名 删除变量

我们用env查看下

3 系统常见环境变量
PATH:系统查找命令的路径
这里写图片描述
这个环境变量的意思是如果用户输入一个命令或可执行文件,不加绝对路径或者相对路径,只是命令或可执行文件本身的名字,那么系统就会到这个路径下寻找该可执行文件,如果我们写了一个命令或脚本,可以把自己的路径加进来
PATH=”$PATH”:/root/sh

PS1:定义系统提示符的变量
什么是系统提示符
这里写图片描述
这个就是系统提示符
\d:显示日期,格式为”星期 月 日”
\h:显示简写主机名,如默认主机名为”localhost”
\t:显示24小时制时间,格式为”HH:MM:SS”
\T:显示12小时制时间,格式为”HH:MM:SS”
\A:显示24小时制时间,格式为”HH:MM”
\u:显示当前系统名
\w:显示当前所在目录的完整名称
\W:显示所在目录的最后一个目录
\#:执行的第几个命令
\$ 如果是root用户,会显示为#,如果是普通用户显示$

我们来看几个例子
Linux Shell基础-Bash变量_第4张图片

这里写图片描述

三 位置参数变量
$n n为数字,$0代表命令本身,$1到$9代表第1到9个参数,10以上需要加{} ${10}
$* 这个变量代表命令行中的所有参数,$*把所有参数看成一个整体
$@ 这个变量也代表命令行中的所有参数,$@把每个参数分别对待
$# 这个变量代表命令行中参数的个数

例子1
我们来写一个脚本 canshu1.sh

输出两个数相加的结果
这里写图片描述

例子2
这里写图片描述
这里写图片描述

例子3
$*与$@的区别
Linux Shell基础-Bash变量_第5张图片

$*中的所有参数看成一个整体,所以for循环只会执行一次
$@中的每个参数都看成是独立的,所以有几个参数,就会循环几次

四 预定于变量
$? 最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,如果这个变量的值为非0(具体是哪个数,由命令自己决定),证明上一个命令执行不正确
Linux Shell基础-Bash变量_第6张图片

$$ 当前进程的id号(PID)
\$! 后台运行的最后一进程的id号(PID)
Linux Shell基础-Bash变量_第7张图片
find最后的&号代表是后台执行
这里写图片描述

接收键盘输入
read 选项 变量名
-p “提示信息” :在等待read输入时,输出提示信息
-t 秒数:指定等待的时间
-n 字符数:不用按回车,达到指定字符数,就会执行
-s :隐藏数据的输入,适用于机密的输入

Linux Shell基础-Bash变量_第8张图片
Linux Shell基础-Bash变量_第9张图片

五 数值运算与预算符
我们先来看一个例子

aa和bb相加的结果依然是字符串,而不是我们想象到的33,这是因为Shell中默认是字符串,那如果我想要整数想加的结果怎么办呢
declare +/- 选项 变量名
- :给变量设定类型属性
+ : 取消变量的类型属性
-i :将变量声明为整数型
-x:将变量声明为环境变量
-p:显示变量被声明的类型

所以刚才如果用declare -i cc=$aa+$bb
就可以得到我们整数运算的值了

还可以用数值运算工具
expr

注意,要用这种方式,+号左右必须有空格

感觉很麻烦,推荐用下面这种方式
Linux Shell基础-Bash变量_第10张图片

在Shell中常见的运算符

注意,这里是优先级的数字越大,优先级越高
Linux Shell基础-Bash变量_第11张图片

未完待续。。。

你可能感兴趣的:(linux,shell)