- Shell中的变量
- Shell运算符
- Shell变量中单引号和多引号的区别
一、Shell中的变量
学过编程语言的伙伴对这个就很熟悉了。
Shell变量的特点 1、Shell定义的变量默认都是字符串格式。
2、bash变量默认是弱类型的,无需事先声明变量格式,同时进行赋值和声明
Shell变量分为系统变量和自定义变量
1、系统变量
操作系统已经定义好的 变量,具有其特殊的 含义,一般都是全部大写。
系统变量都是全局变量,在任何的Shell中都可以调用。
如:$HOME 获取当前用户的家目录,一般写脚本时候使用
$PWD 获取当前目录
$SHELL 默认的解析器
$USER 获取当前用户名称
2、用户自定义变量
用户根据自己的需求来定义变量,完成某种操作。
(1)、变量赋值
将一个数字或者字符串 赋值给一个变量来存储。
定义的格式: 直接在命令行写入: 变量名=变量值
如: A=1
注意这里的等号 两端不能有空格。
然后我们使用echo来输出这个变量内容: echo $A
这里的$符号,会找到这个A的位置,使用echo输出其中的内容。
(2)、变量撤销
取消变量的赋值,使变量值为空。
命令: unset 变量名
如: unset A
(3)、声明一个静态变量
命令: readonly 变量名=变量值
注意:静态变量是只读变量,不能使用unset来撤销变量。只有当你的虚拟机重新启动,才会自动撤销。
(4)、变量定义的规则
1.变量的名字可以由字母、数字、下划线组成,但是不能以数字开头,环境变量名建议大写。(这里的环境变量名就是直接在命令行进行定义的变量,也叫做局部变量),变量名严格按照编程语言的变量名进行,区分大小写。
2.等号两侧不能有空格
3.在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。4.变量的值如果有空格,需要使用双引号或单引号括起来。·
用户定义的环境变量(局部变量)进行提升为全局环境变量,可以供其它Shell程序使用。
如:我们定义局部变量为: D="ZJ123"
然后,创建一个sh文件,在文件中写入:
#!/bin/bash
echo "helloworld"
echo $D
我们在执行这个sh文件的时候,只会 显示 helloworld,没有D的值。
因为D变量是局部变量,在文件中是调用不到的,因此需要提升D变量为全局变量。
使用命令 export D
然后再执行,显示 helloworld ZJ123.
命令: export 变量名 //用来提升变量为全局环境变量
3、特殊变量
(1)、特殊变量 -- $n
功能描述: Sn -- n为数字,S0代表该脚本名称,S1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如S{10} )
案例操作:创建一个sh文件,然后输出 $1 $2 $3
#!/bin/bash echo "$0 $1 $2 $3 $4"
然后执行这个sh文件,结果显示是sh文件的文件名称,而当我们继续执行
bash A.sh B
bash A.sh B C D
结果显示,在文件名后 ,依次出现我们执行的参数。
这个类似于编程里面的形参和实参,其中的$1 $2 $3就相当于形参,我们在执行sh文件的时候,后面加的内容就是实参,通过将实参传递进sh文件中,替换形参进行输出。不过要注意形参的个数,假如实参个数大于形参,则不显示超出的。
(2)、特殊变量 -- $#
功能描述: 获取所有输入参数的个数,常用于循环
案例操作:
创建一个sh文件,写入
#!/bin/bash echo "$0 $1 $2 $3 $4" echo "$#"
结果显示,$# 可以显示当前实参的个数。
(3)、特殊变量 -- $* 、$@
功能描述:
$*: 这个变量代表命令行中所有的参数,把所有的参数看成一个整体
$@::这个变量也代表命令行中所有的参数,不过S@把每个参数区分对待
案例操作:
#!/bin/bash echo "$0 $1 $2 $3 $4" echo "$#" echo "$*" echo "$#"
结果显示: 其中结果虽然显示一样,但是其中还有些不同之处。
(4)、特殊变量 -- $?
功能描述:用于证明上一条命令是否执行正确。
具体是: 显示最后一次执行的命令的返回状态。如果这个变量的值为0,证明上个命令正确执行;
如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
案例操作:
二、Shell运算符
1、基本语法
(1)、“$((运算式))” 或者 "$[运算式]"
(2)、expr +、-、\*、/、%、 加 减 乘 除 取余
注意 expr 运算符中间要有空格
案例操作:
要计算复杂的乘法 如 (2+3)x20 则命令为 expr `expr 2 + 3` \* 20 注意在Linux中,`` 这种反引号中命令执行结果会被保留下来,继续下一步计算 如果要使用 $ 来完成计算,则需要 s=$[(2+3)*4] 然后使用echo,输出s , echo $s 结果为: 20
三、Shell变量中单引号和多引号的区别
我们在定义变量的时候,可以知道,定义变量有多种方式。
如: age=10 、 age="10" 、 age='10' ,这样定义所输出的age内容是一样的。
但是我们在使用单引号和双引号定义的时候,还是有一些区别:
具体是:单引号变量不识别特殊语法,双引号变量识别特殊语法。
我们在使用后发现,使用单引号的时候假如里面有特殊语法会原封不动 的输出。
但是使用双引号时候里面有特殊语法,会执行特殊语法后,然后输出。