shell基础编程(一)

引言:之前的初识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脚本的本篇文章的内容了,接下来会持续更新~ ​

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

找BUG的老爷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值