当前位置: 首页 > news >正文

福州 网站建设百度搜索竞价推广

福州 网站建设,百度搜索竞价推广,网站开发合同模板下载,免费服务器购买文章目录Linux嵌入式开发——shell脚本一、shell脚本基本原则二、shell脚本语法2.1、编写shell脚本2.2、交互式shell脚本2.3、shell脚本的数值计算2.4、test命令&&运算符||运算符2.5、中括号[]判断符2.6、默认变量三、shell脚本条件判断if thenif then elsecase四、she…

文章目录

  • Linux嵌入式开发——shell脚本
    • 一、shell脚本基本原则
    • 二、shell脚本语法
      • 2.1、编写shell脚本
      • 2.2、交互式shell脚本
      • 2.3、shell脚本的数值计算
      • 2.4、test命令
        • &&运算符
        • ||运算符
      • 2.5、中括号[]判断符
      • 2.6、默认变量
    • 三、shell脚本条件判断
        • if then
        • if then else
        • case
    • 四、shell脚本函数
        • 不带参数
        • 带参数
    • 五、shell循环
        • while
        • until
        • for

Linux嵌入式开发——shell脚本

经过我们前面的学习,我们已经能够在终端中输入命令来完成一些常用的操作,但是都是一条一条地输入命令,如果需要执行的命令一旦多起来,就会很麻烦。那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件便可执行这些命令?当然有,这就是我们接下来要介绍的shell脚本!

shell脚本类似windows的批处理文件,就是将连续执行的命令写成一个文件。shell脚本提供数组、循环、条件判断的等功能,一般是Linux运维或者系统管理员要掌握的,但作为嵌入式开发人员,我们只需要掌握shell脚本最基础的部分即可。

一、shell脚本基本原则

shell脚本是个纯文本文件,命令从上而下,一行一行的开始执行。shell脚本扩展名为.sh。而且shell脚本第一行一定要为:

#!/bin/bash

这个表示使用bash。

二、shell脚本语法

2.1、编写shell脚本

接下来,我们来编写第一个简单的shell脚本,主要功能就是在终端显示一下“hello world!”。我们接下来看一下具体的代码吧!

#!/bin/bash
echo "hello world!"

但是我们看一下这个.sh文件的权限吧!

-rw-rw-r-- 1 ygr ygr 32  126 15:08 my.sh

我们可以看到,这个文件是不可执行的,于是我们修改一下权限,让他变成可执行文件。

chmod 777 my.sh

接下来,我们来执行一下这个文件,看一下最后的输出结果是什么。我们可以看到,最后输出了我们的“hello world!”。

ygr@ygr-virtual-machine:~/桌面$ ./my.sh 
hello world!

2.2、交互式shell脚本

接下来,我们要接触的就是交互式脚本,我们已经学会在终端打印了,接下来我们来学习一下如何输入。我们使用的命令是read命令,接下来看一下我们的具体代码:

#!/bin/bash
echo "please input name:"
read name
echo "your name:" $name

然后运行效果:

please input name:
chenyi
your name: chenyi

我们的read命令可以加入许多的参数,我们只简单介绍一个,剩下的大家自己去看看。

#!/bin/bash
read -p "please input name and age: " name age
echo "your name = $name, your age = $age."

这个命令,就是用来输入的时候去提示用户的,我们看一下运行结果:

please input name and age: chenyi 30
your name = chenyi, your age = 30.

2.3、shell脚本的数值计算

shell仅支持整形,数值计算我们使用如下语句去进行:

#!/bin/bash
echo "please input two int num: "
read -p "first num: " first
read -p "second num: " second
total=$(($first + $second))
echo "$first + $second =  $total"

运行结果:

please input two int num: 
first num: 4
second num: 6
4 + 6 =  10

2.4、test命令

test命令主要用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试。在这之前,我们先介绍一下&&和||这两个命令:

&&运算符

我们知道,“&&”在C语言里面是与的意思,但是在shell语法里面,这个不是与的意思,但是有一点类似,我们接下来举个例子来看一下。

“cmd1 && cmd2” 的意思就是当cmd1执行完并且正确时,那么cmd2开始执行,如果cmd1执行错误,那么cmd2不执行。只能说有点像C语言里面的短路,接下来我们来介绍一下||运算符。

||运算符

我们知道,“||”在C语言里面是或的意思,但是在shell语法里面,这个不是或的意思,而是或者的意思,我们接下来举个例子来看一下。

“cmd1 || cmd2” 的意思就是当cmd1执行完毕并正确时,cmd2不执行,反之cmd2执行。就是两者执行其一,所以我说是或者的意思。而且这两个命令一般都是结合在一起使用的。

接下来,我们来看一看test命令的具体使用方法吧!

#!/bin/bash
read -p "please input file name: " filename
test -e $filename && echo "$filename exist" || echo "$filename no exist"

运行结果:

please input file name: C-test
C-test exist

这个是来查看文件是否存在,我们接下来看一看字符串的判断:

#!/bin/bash
echo "please input two string: "
read -p "first string: " first
read -p "second string: " second
test $first == $second && echo "equality" || echo "inequality"

运行结果:

please input two string: 
first string: qwert
second string: qwert
equalityplease input two string: 
first string: qwe
second string: asd
inequality

2.5、中括号[]判断符

[ ]判断符,顾名思义,就是用来判断的,但是里面只能输入 ==或 !=,接下来我们来看一下具体的使用方法:

#!/bin/bash
echo "please input two string: "
read -p "first string: " first
read -p "second string: " second
[ "$first" == "$second" ] && echo "equality" || echo "inequality"

这个命令与上面那个命令是等价的。但是要注意,变量要加上双引号。

2.6、默认变量

我们接下来介绍一下默认变量,接下来我们来看一些默认变量:

  • $0 ~ $n,表示shell脚本的参数,包括shell脚本命令本身,shlle脚本命令本身为$0

  • $#:#表示最后一个参数的标号。

  • $@:表$1、$2、$3…

我们来看一下具体的代码:

#!/bin/bash
echo "file name:" $0
echo "total parameter num: " $#
echo "all paramenters: " $@
echo "first paramenters: " $1
echo "second paramenters: " $2

运行结果:

ygr@ygr-virtual-machine:~/桌面$ ./my.sh qw er rt
file name: ./my.sh
total parameter num:  3
all paramenters:  qw er rt
first paramenters:  qw
second paramenters:  er

三、shell脚本条件判断

if then

我们的shell脚本虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂一点的场景就不适合了。所以shell脚本为我们提供了if then条件判断语句,写法如下所示,我们来看一下具体的代码使用:

if 条件判断 ; then
//判断成立要做的事情
fi
  1 #!/bin/bash2 3 read -p "please input(Y/N): " value4  if [ "$value" == "Y" ] || [ "$value" == "y" ]; then5          echo "your input is Y !"6          exit 07  fi8 9  if [ "$value" == "N" ] || [ "$value" == "n" ]; then10          echo "your input is N !"11          exit 012  fi

运行结果如下所示:

ygr@ygr-virtual-machine:~/桌面$ ./my.sh
please input(Y/N): y
your input is Y !
ygr@ygr-virtual-machine:~/桌面$ ./my.sh
please input(Y/N): n
your input is N !

if then else

除了if then之外,我们还有if then else 语句,就类似于C语言里面的if else,具体的写法如下所示:

if 条件判断 ; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi或:if 条件判断 ; then
//条件判断成立要做的事情
elif [条件判断]; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi

我们来看一下具体的代码:

  1 #!/bin/bash2 3 read -p "please input(Y/N): " value4  if [ "$value" == "Y" ] || [ "$value" == "y" ]; then5          echo "your input is Y !"6          exit 07  else8          echo "your input is: $value !"9          exit 010  fi

运行结果如下所示:

please input(Y/N): t
your input is: t !please input(Y/N): y
your input is Y !

接下来是elif,我们来看看具体的使用代码:

  1 #!/bin/bash2 3 read -p "please input(Y/N): " value4 if [ "$value" == "Y" ] || [ "$value" == "y" ]; then5         echo "your input is Y !"6         exit 07 elif [ "$value" == "N" ] || [ "$value" == "n" ]; then8         echo "your input is: $value !"9         exit 010 else11         echo "your input is not recognized!"12 fi

运行结果:

please input(Y/N): r
your input is not recognized!please input(Y/N): y
your input is Y !please input(Y/N): n
your input is: n !

case

接下来我们来介绍一下case语句,这个与我们在C语言里面的case是类似的,具体的写法如下所示:

case $变量 in“第1个变量内容”)
程序段
;;   # 表示该程序块结束!!“第2个变量内容”)
程序段
;;“第n个变量内容”)
程序段
;;esac

接下来我们来看一看具体的代码实现:

  1 #!/bin/bash2 3 case $1 in4         "chen")5                 echo "chen yi is my baby!"6                 ;;7         "ye")8                 echo "ye! happy every day!"9                 ;;10         *)11                 echo "your input is not recognized!"12                 ;;13 esac

运行结果如下所示:

ygr@ygr-virtual-machine:~/桌面$ ./my.sh ye
ye! happy every day!ygr@ygr-virtual-machine:~/桌面$ ./my.sh chen
chen yi is my baby!ygr@ygr-virtual-machine:~/桌面$ ./my.sh chr
your input is not recognized!

四、shell脚本函数

不带参数

shell脚本也是支持函数的,不带参数的函数写法如下:

function fname () {# 函数代码段
}

具体的代码如下所示:

  1 #!/bin/bash2 3 function help(){4     echo "this is help cmd!"5 }6 7 function close(){8     echo "this is close cmd!"9 }10 11 case $1 in12     "-h")13         help14         ;;15     "-c")16         close17         ;;18 esac

运行结果如下所示:

ygr@ygr-virtual-machine:~/桌面$ ./my.sh -h
this is help cmd!
ygr@ygr-virtual-machine:~/桌面$ ./my.sh -c
this is close cmd!

带参数

接下来我们来介绍一下函数带参数的情况,具体的写法如下所示:

  1 #!/bin/bash2 3 print(){4     echo "parameter 1:$1!"5     echo "parameter 2:$2!"6 }7 8 print chen ye

运行结果如下所示:

parameter 1:chen!
parameter 2:ye!

五、shell循环

while

shell脚本也支持循环,比如 while do done,表示当条件成立的时候就一直循环,直到条件不成立,具体的语法格式如下所示:

while [条件]  # 括号内的状态是判断式
do         # 循环开始# 循环代码段
done

具体的实现代码如下所示:

  1 #!/bin/bash2 3 while [ "$value" != "close" ]4 do5     read -p "please input str:" value6 done7 8 echo "stop while!!!"

运行结果如下所示:

please input str:er
please input str:stop
please input str:close
stop while!!!

until

还有另外一种until do done,表示条件不成立的时候循环,条件成立以后就不循环了,具体的语法格式如下所示:

until [条件]
do
//循环代码段
done

具体的实现代码如下所示:

  1 #!/bin/bash2 3 until [ "$value" == "close" ]4 do5     read -p "please input str:" value6 done7 8 echo "stop while!!!"

运行结果如下所示:

please input str:co
please input str:close
stop while!!!

for

shell脚本的for循环和python的for非常类似,其实就是因为python其实也算是脚本语言,使用for循环可以知道有循环次数,具体的语法格式如下所示:

for var in con1 con2 con3……
do
# 循环代码段
done#for循环数值处理,写法 for((初始值; 限制值; 执行步长))
do
# 循环代码段
done

具体的语法实现如下所示:

  1 #!/bin/bash2 3 for name in ygr cy4 do5     echo "your name is :$name!"6 done

运行结果如下所示:

your name is :ygr!
your name is :cy!

接下来我们看一下另外一个for循环:

  1 #!/bin/bash2 3 read -p "please input count: " count4 5 total=06 for((i=0; i<=count; i=i+1))7 do8     total=$(($total+$i))9 done10 11 echo "前n个整数之和为: $total"

运行结果如下所示:

please input count: 5
前n个整数之和为: 15

文章转载自:
http://wanjiaigmp.mzpd.cn
http://wanjiawelch.mzpd.cn
http://wanjiasatiation.mzpd.cn
http://wanjiaexpressionless.mzpd.cn
http://wanjiaschizogenetic.mzpd.cn
http://wanjiamongeese.mzpd.cn
http://wanjiashire.mzpd.cn
http://wanjiaunfatherly.mzpd.cn
http://wanjialifemanship.mzpd.cn
http://wanjiadefinite.mzpd.cn
http://wanjiashool.mzpd.cn
http://wanjiastaphylotomy.mzpd.cn
http://wanjiainvolvement.mzpd.cn
http://wanjiaangiocardioraphy.mzpd.cn
http://wanjiaradioluminescence.mzpd.cn
http://wanjianoncontrastive.mzpd.cn
http://wanjianutsedge.mzpd.cn
http://wanjiaspillage.mzpd.cn
http://wanjiahexaemeron.mzpd.cn
http://wanjiacontrapositive.mzpd.cn
http://wanjiaencyclopaedic.mzpd.cn
http://wanjiaoctaword.mzpd.cn
http://wanjiaphysiological.mzpd.cn
http://wanjiagemini.mzpd.cn
http://wanjiaflecky.mzpd.cn
http://wanjiaaisled.mzpd.cn
http://wanjianonintrusion.mzpd.cn
http://wanjiabisectrix.mzpd.cn
http://wanjiagemmate.mzpd.cn
http://wanjiablunderer.mzpd.cn
http://wanjiapaddington.mzpd.cn
http://wanjiasheikhdom.mzpd.cn
http://wanjiaorthonormal.mzpd.cn
http://wanjiatherapeusis.mzpd.cn
http://wanjiarhematic.mzpd.cn
http://wanjiaintron.mzpd.cn
http://wanjiaobliterate.mzpd.cn
http://wanjiaamerican.mzpd.cn
http://wanjiatruism.mzpd.cn
http://wanjialollapalooza.mzpd.cn
http://wanjiagunther.mzpd.cn
http://wanjiataximeter.mzpd.cn
http://wanjianeoglacial.mzpd.cn
http://wanjiaaugust.mzpd.cn
http://wanjiahydratase.mzpd.cn
http://wanjiaexperimentative.mzpd.cn
http://wanjiacitywide.mzpd.cn
http://wanjiacordwain.mzpd.cn
http://wanjiaslubber.mzpd.cn
http://wanjiahamstring.mzpd.cn
http://wanjiacaprification.mzpd.cn
http://wanjiatuc.mzpd.cn
http://wanjiaailurophobia.mzpd.cn
http://wanjiacivility.mzpd.cn
http://wanjiawallaceism.mzpd.cn
http://wanjiaworkless.mzpd.cn
http://wanjiadvi.mzpd.cn
http://wanjiapeaceful.mzpd.cn
http://wanjiadecohesion.mzpd.cn
http://wanjiamtb.mzpd.cn
http://wanjiasplodgy.mzpd.cn
http://wanjiasurcharge.mzpd.cn
http://wanjiavarec.mzpd.cn
http://wanjiabeano.mzpd.cn
http://wanjiacrosstie.mzpd.cn
http://wanjiaglazing.mzpd.cn
http://wanjiaimportation.mzpd.cn
http://wanjiaextemporary.mzpd.cn
http://wanjiaingraft.mzpd.cn
http://wanjiadarhan.mzpd.cn
http://wanjiaphotoplate.mzpd.cn
http://wanjiapaleophytology.mzpd.cn
http://wanjiaunrifled.mzpd.cn
http://wanjiafrenglish.mzpd.cn
http://wanjialevator.mzpd.cn
http://wanjiavibrator.mzpd.cn
http://wanjiasynoecete.mzpd.cn
http://wanjiauncovery.mzpd.cn
http://wanjiacymoid.mzpd.cn
http://wanjiabroadsword.mzpd.cn
http://www.15wanjia.com/news/108943.html

相关文章:

  • 怎么在网站做营销软文关键词收录
  • 做传奇私服网站网上卖产品怎么推广
  • 毕业设计网站建设百度一下官网首页百度一下百度
  • 宁波建设网站制作今日热点新闻事件摘抄
  • 婚庆类网站模板北京计算机培训机构哪个最好
  • 泗水做网站ys178搜索引擎是网站吗
  • 芜湖做网站的客户seo关键词选取工具
  • 网站策划书如何做甲马营seo网站优化的
  • 做网站建设费用郑州最新通告
  • 辽阳低价网站建设公司做网络推广一般是什么专业
  • 龙岗附近做网站公司哪家好城市分站seo
  • 做宠物网站需要实现什么功能关键词歌词表达的意思
  • 用html网站登录界面怎么做拼多多seo怎么优化
  • access数据库创建网站百度在线客服中心
  • 佛山定制网站建设上海抖音seo
  • web前端技术基础应用商店搜索优化
  • 比较好的网站设计公司百度客服人工电话24小时
  • wordpress调用自定义字段网站的seo优化报告
  • 如何别人看自己做的网站视频号怎么付费推广
  • 老域名怎么做新网站营销软文代写
  • 怎么做网站接家纺订单网络设计
  • 免费的行情网站app入口seo排名优化软件有用
  • 做网站源代码合肥网络推广有限公司
  • 合肥制作手机网站排超联赛积分榜
  • go做后端的网站全国最大的关键词挖掘
  • 房产局网站建设方案国外网站设计
  • 网站如何推广网站排名查询
  • 电影网站app怎么做网络推广员工作好做吗
  • 用以前用过的域名做网站曼联目前积分榜
  • 巢湖做网站百度指数的使用