引言:之前的初识shell的内容简单的介绍了一下shell,帮助大家认识了一下shell 的组成,这篇文章就具体的讲解shell有关的知识。如果大家有编程基础的话。接下来几篇的文章读起来都会非常容易。没有的话也没有关系,我尽最大的可能讲的通俗易懂。那么现在就开始吧
首先说一下shell里面的各种变量类型的声明
创建一个变量:x=”xiaoli”
创建局部变量:local name=”xiaoli”,使用local修饰的变量在函数体外无法访问,只能在函数体中使用。
创建只读变量:readonly name=”xiaoli”,这种变量不可以被修改。
使用变量:echo $name或者echo ${name}
删除变量:unset name.
下面写一个实例,编辑test2.sh
x="2" echo $x
上面的文件里面的echo是用于输出的,变量本身的值需要用到$
需要注意的是,变量名和等号之间不能有空格! 否则会被Shell解释成命令和命令行参数。 同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
说几个常用的功能
一、获取字符串的长度,用#符号获取,具体看代码
x="hello"echo ${#x}
二、获取子字符串
x="qwertyuiop"echo ${x:1:4}#前闭后开(]
上面的表示从第二个开始获取,一共四个字符
三、单引号和双引号
一句话总结,单引号内容为纯字符串,双引号里面可以取变量的值,举个例子
x="wode"
y="$x"shijie
z='$x'shijie
echo $y
echo $z
四、字符串的拼接
shell里面的字符串的拼接直接输出到一块就是拼接了,举个例子
x="wode"
y="shijie"
z=$x$y
echo $z
五、shell的运算符
hell 和其他编程语言一样,支持多种运算符,包括:
- 算数运算符
- 关系(比较)运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
(一)下表列出了常用的算术运算符,具体的应用在举例列举出来,假设x和y都为1,(())只支持整数
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | z=$(($x+$y)) echo $z |
– | 减法 | z=$(($x-$y)) echo $z |
* | 乘法 | z=$(($x*$y)) echo $z |
/ | 除法 | z=$(($x/$y)) echo $z |
% | 取余 | z=$(($x%$y)) echo $z |
= | 赋值 | z=$x echo $z |
== | 相等。用于比较两个数字,相同则返回 true。 | [ x==y ] 返回true |
!= | 不相等。用于比较两个数字,不相同则返回 true。 | [ x!=y ] 返回false |
(二)看看关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量x 为 1,变量 y 为 1:
运算符 | 说明 | 举例 |
---|---|---|
-eq | 检测两个数是否相等,相等返回 true。 | [ x −eq y ] 返回 true。 |
-ne | 检测两个数是否相等,不相等返回 true。 | [ x −ne y ] 返回 false。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | [ x −gt y ] 返回 false。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | [ x −lt y ] 返回 false。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ x −ge y ] 返回 true。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ x −le y ] 返回 true。 |
那么这里有个小的技巧,不用死记硬背,比如说-eq,eq是equal
-ne –>not equal
-gt –>greater than
-lt –>less than
-ge –>greater equal
-le –>less equal
把上面的对应成英文是不是就好理解了呢
(三)布尔运算符
下表列出了常用的布尔运算符
运算符 | 说明 | 举例 |
---|---|---|
! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
-o | 或运算,有一个表达式为 true 则返回 true。 | [ 1 -eq 2 -o 1 -eq 1 ] 返回 true。 |
-a | 与运算,两个表达式都为 true 才返回 true。 | [ 1−lt 1 −a 1 −lt 1 ] 返回 false。 |
(四)逻辑运算符
运算符 | 说明 | 举例 |
---|---|---|
&& | 逻辑的 AND | [[ 1 -lt 1 && 1 -gt 0 ]] 返回 false |
|| | 逻辑的 OR | [[ 2 -lt 3 || 1 -gt 2 ]] 返回 true |
在逻辑运算符中,表达式需要用[[]],而布尔表达式是[]就可以了,不能用错。这些用到的地方就是在条件判断的时候了。而接下来的内容就要详细介绍条件判断模块
(五)字符串运算符
运算符 | 说明 | 举例 |
---|---|---|
= | 检测两个字符串是否相等,相等返回 true。 | [ “a” = “b” ] 返回 false。 |
!= | 检测两个字符串是否不相等,不相等返回 true。 | [ “a” != “b” ] 返回 true。 |
-z | 检测字符串长度是否为0,为0返回 true。 | [ -z “a” ] 返回 false。 |
-n | 检测字符串长度是否不为 0,不为 0 返回 true。 | [ -n “a” ] 返回 true。 |
$ | 检测字符串是否不为空,不为空返回 true。 | [ $”a” ] 返回 true。 |
六、简单的条件判断
这里简单说一下,为下面铺垫一下。其中格式为:
if [ 表达式 ]
then
语句
fi
首先创建test3.sh文件
在里面写上内容
if [ 1 -eq 1 ]
then
echo "hello world"
fi
让我们执行一下
一些答疑
问:只读变量可以被删除吗
答:不可以,只读变量不会被删除
问:在做算数运算的时候必须是(())吗
答:不是的,这只是整数运算的一种,还可以用其他的比如let
let a=1+2
echo $a
如果是小数的话用bc,比如
echo 1+2 | bc
问:-a和&&与-o和||有什么区别呢
答:其实意思是一样的,但-a和&&区别是-a两边都执行,然后判断。&&是从左到右依次执行,成功往下执行,失败终止执行。-o和||的话也是-o两边同时执行,||的话左边不成功继续往下执行,成功就不往下执行了
以上就是关于shell脚本的本篇文章的内容了,接下来会持续更新~