前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell基础编程(一)

shell基础编程(一)

作者头像
找Bug
发布2022-12-14 18:35:37
4440
发布2022-12-14 18:35:37
举报
文章被收录于专栏:你的Bug我做主

引言:之前的初识shell的内容简单的介绍了一下shell,帮助大家认识了一下shell 的组成,这篇文章就具体的讲解shell有关的知识。如果大家有编程基础的话。接下来几篇的文章读起来都会非常容易。没有的话也没有关系,我尽最大的可能讲的通俗易懂。那么现在就开始吧

首先说一下shell里面的各种变量类型的声明

创建一个变量:x=”xiaoli”创建局部变量:local name=”xiaoli”,使用local修饰的变量在函数体外无法访问,只能在函数体中使用。创建只读变量:readonly name=”xiaoli”,这种变量不可以被修改。使用变量:echo name或者echo {name}删除变量:unset name.

下面写一个实例,编辑test2.sh

代码语言:javascript
复制
x="2" 

echo $x

上面的文件里面的echo是用于输出的,变量本身的值需要用到$

需要注意的是,变量名和等号之间不能有空格! 否则会被Shell解释成命令和命令行参数。同时,变量名的命名须遵循如下规则:

首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。

说几个常用的功能

一、获取字符串的长度,用#符号获取,具体看代码

代码语言:javascript
复制
x="hello"

echo ${#x}

二、获取子字符串

代码语言:javascript
复制
x="qwertyuiop"

echo ${x:1:4}#前闭后开(]

上面的表示从第二个开始获取,一共四个字符

三、单引号和双引号

一句话总结,单引号内容为纯字符串,双引号里面可以取变量的值,举个例子

代码语言:javascript
复制
x="wode"
y="$x"shijie
z='$x'shijie
echo $y
echo $z

四、字符串的拼接

shell里面的字符串的拼接直接输出到一块就是拼接了,举个例子

代码语言:javascript
复制
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。

六、简单的条件判断

这里简单说一下,为下面铺垫一下。其中格式为:

代码语言:javascript
复制
if [  表达式  ]
then
语句
fi

首先创建test3.sh文件

在里面写上内容

代码语言:javascript
复制
if [ 1 -eq 1 ]
then
echo "hello world"
fi

让我们执行一下

一些答疑

问:只读变量可以被删除吗

答:不可以,只读变量不会被删除

问:在做算数运算的时候必须是(())吗

答:不是的,这只是整数运算的一种,还可以用其他的比如let

代码语言:javascript
复制
let a=1+2
echo $a

如果是小数的话用bc,比如

代码语言:javascript
复制
echo 1+2 | bc

问:-a和&&与-o和||有什么区别呢

答:其实意思是一样的,但-a和&&区别是-a两边都执行,然后判断。&&是从左到右依次执行,成功往下执行,失败终止执行。-o和||的话也是-o两边同时执行,||的话左边不成功继续往下执行,成功就不往下执行了

以上就是关于shell脚本的本篇文章的内容了,接下来会持续更新~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 找Bug 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档