iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >shell基础语法的示例分析
  • 658
分享到

shell基础语法的示例分析

2023-06-09 12:06:11 658人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关shell基础语法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。不论前端还是后端,再学会linux的基础上,还应该学会写一些简单的Shell。不止是工作,日常中想做一

这篇文章将为大家详细讲解有关shell基础语法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

不论前端还是后端,再学会linux的基础上,还应该学会写一些简单的Shell。不止是工作,日常中想做一些东西,如果手动做就很累人也费时间,如果你会用Shell脚本处理就很简单了,本文普及的shell的一些基础知识。后面还会持续更新。

shell基础语法之变量

shell 变量命名

  • 变量只能由大小写字母,数字和下划线组成。

  • 变量名称不能以数字开头。

  • 变量可以存储数字类型或者字符串类型。

  • 变量赋值等号两边不能有空格。

  •  字符串的变量可以用单引号或者双引号括起来。

定义变量:

➜ ~ name="xiaoka"➜ ~ age=2

无效的定义
[

root@iz2ze0ajic0vbv28hcdctpz hello]# 1212=sfds-bash: 1212=sfds: 未找到命令[root@iz2ze0ajic0vbv28hcdctpz hello]# ?aasd=hehe-bash: ?aasd=hehe: 未找到命令

shell 变量调用

变量的调用使用$符号或者$符号加上花括号。一般来讲使用花括号的用法。

举例说明:

[root@iz2ze0ajic0vbv28hcdctpz hello]# apple=hongfushi[root@iz2ze0ajic0vbv28hcdctpz hello]# echo $applepen[root@iz2ze0ajic0vbv28hcdctpz hello]# echo ${apple}penhongfushipen

如果不加花括号,就会读成applepen为一个变量,因此解析产生了歧义。

shell 变量分类

  • 环境变量:保存操作系统运行时使用的参数。

  • 位置变量:传递脚本参数时使用。

  • 预定义变量:类似于环境变量,不同是它是不能重定义的。

  • 自定义变量:由用户自定义,可用于用户编写的脚本。

自定义变量:

定义变量database:

[root@iz2ze0ajic0vbv28hcdctpz hello]# database=mysql[root@iz2ze0ajic0vbv28hcdctpz hello]# echo $databaseMysql[root@iz2ze0ajic0vbv28hcdctpz hello]# echo ${database}mysql

环境变量:查看全局环境变量:

[root@iz2ze0ajic0vbv28hcdctpz ~]# printenvXDG_SESSioN_ID=2044HOSTNAME=iz2ze0ajic0vbv28hcdctpzTERM=xterm-256colorSHELL=/bin/bashHISTSIZE=1000ssh_CLIENT=113.44.42.209 56074 22SSH_TTY=/dev/pts/1USER=rootLS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.WEBm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.Qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:Maven_HOME=/usr/local/apache-maven-3.6.0MaiL=/var/spool/mail/rootPATH=/usr/local/apache-maven-3.6.0/bin:/usr/local/jdk1.8.0_191/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binPWD=/rootJAVA_HOME=/usr/local/jdk1.8.0_191LANG=zh_CN.UTF-8HISTCONTROL=ignoredupsSHLVL=1HOME=/rootLOGNAME=rootCLASSPATH=.:/lib/dt.jar:/lib/tools.jarSSH_CONNECTION=113.44.42.209 56074 172.17.187.244 22LC_CTYPE=zh_CN.UTF-8LESSOPEN=||/usr/bin/lesspipe.sh %sXDG_RUNTIME_DIR=/run/user/0_=/usr/bin/printenv

定义一个环境变量

[root@iz2ze0ajic0vbv28hcdctpz ~]# export kaka="kaka"[root@iz2ze0ajic0vbv28hcdctpz ~]# env |grep kakakaka=kaka

删除环境变量

[root@iz2ze0ajic0vbv28hcdctpz ~]# unset kaka[root@iz2ze0ajic0vbv28hcdctpz ~]# env |grep kaka

w如果长期使用,可以把它们写在配置文件中。/etc/profile 或者 用户家目录的.bash_profile

位置变量 :

我们先定义一个shell。

[root@iz2ze0ajic0vbv28hcdctpz ~]# cat test.sh#!/bin/bashecho "执行的文件: $0"echo "第一个参数: $1"echo "第二个参数: $2"

执行查看结果。

[root@iz2ze0ajic0vbv28hcdctpz ~]# chmod +x test.sh
[root@iz2ze0ajic0vbv28hcdctpz ~]# ./test.sh 1 2
执行的文件: ./test.sh
第一个参数: 1
第二个参数: 2

预定义变量:

常用的预定义变量有如下几个。

shell基础语法的示例分析

#!/bin/bashecho "执行的文件: $0"echo "第一个参数: $1"echo "第二个参数: $2"echo "所有参数: $*"echo "当前脚本的pid: $"echo "脚本参数个数: $#"

查看执行结果

[root@iz2ze0ajic0vbv28hcdctpz ~]# ./test.sh 1 2
执行的文件: ./test.sh
第一个参数: 1
第二个参数: 2
所有参数: 1 2
当前脚本的pid: 30170
脚本参数个数: 2

查看上一个命令执行结果。

[root@iz2ze0ajic0vbv28hcdctpz hello]# ls
test
[root@iz2ze0ajic0vbv28hcdctpz hello]# echo $?
0

shell 运算符

shell也是一门语言其实和其他的语言运算符大同小异,不过这里我们还是来说一下。本节说一下运算符相关内容。

运算符种类

  • 算数运算符

  • 关系运算符

  • 布尔运算符

  • 逻辑运算符

  • 字符串运算符

  • 文件测试运算符

算数运算符

shell基础语法的示例分析

命令: expr
作用:   求表达式的值
语法:    expr 表达式
规则:

  •     运算符号两边要有空格

  • 遇到特殊符号如*号需要在前面加反斜杠

  • 空格和特殊字符串需要用引号括起来

操作:(先编写一个运算相关的shell脚本)

#!/bin/bashi=1j=2addition=`expr $i + $j`subtraction=`expr $i - $j`multiplication=`expr $j \* $j`division=`expr $j / $i`mod=`expr $j % $i`echo "addition=${addition} , subtraction=${subtraction} , multiplication=${multiplication} , division=${division} , mod=${mod}"if [ $i == $j ]then echo "i 等于 j"fiif [ $i != $j ]then echo "i 不等于 j"fi

查看结果:

➜  ~ ./operation.sh
addition=3 , subtraction=-1 , multiplication=4 , division=2 , mod=0
i 不等于 j

关系运算符

shell基础语法的示例分析

操作:(编写脚本)

#!/bin/bashnum1=5num2=8if [ $num1 -eq $num2 ]then echo "$num1 是否等于 $num2 : num1 等于 num2"else echo "$num1 是否等于 $num2: num1 不等于 num2"fiif [ $num1 -ne $num2 ]then echo "$num1 是否不等于 $num2: num1 不等于 num2"else echo "$num1 是否不等于 $num2 : num1 等于 num2"fiif [ $num1 -gt $num2 ]then echo "$num1 是否大于 $num2: num1 大于 num2"else echo "$num1 是否大于 $num2: num1 不大于 num2"fiif [ $num1 -lt $num2 ]then echo "$num1 是否小于 $num2: num1 小于 num2"else echo "$num1 是否小于 $num2: num1 不小于 num2"fiif [ $num1 -ge $num2 ]then echo "$num1 是否大于等于 $num2: num1 大于或等于 num2"else echo "$num1 是否大于等于 $num2: num1 小于 num2"fiif [ $num1 -le $num2 ]then echo "$num1 是否小于等于 $num2: num1 小于或等于 num2"else echo "$num1 是否小于等于 $num2: num1 大于 num2"fi

操作结果:

➜  ~ ./relation.sh
5 是否等于 8: num1 不等于 num2
5 是否不等于 8: num1 不等于 num2
5 是否大于 8: num1 不大于 num2
5 是否小于 8: num1 小于 num2
5 是否大于等于 8: num1 小于 num2
5 是否小于等于 8: num1 小于或等于 num2

布尔运算符

shell基础语法的示例分析

编写脚本:

#!/bin/bashnum1=3num2=23if [ $num1 != $num2 ]then echo "$num1 != $num2 : num1 不等于 num2"else echo "$num1 != $num2: num1 等于 num2"fiif [ $num1 -lt 25 -a $num2 -gt 15 ]then echo "$num1 小于 25 且 $num2 大于 15 : 返回 true"else echo "$num1 小于 25 且 $num2 大于 15 : 返回 false"fiif [ $num1 -lt 25 -o $num2 -gt 25 ]then echo "$num1 小于 25 或 $num2 大于 25 : 返回 true"else echo "$num1 小于 25 或 $num2 大于 25 : 返回 false"fi

查看结果:

➜  ~ ./bool.sh
3 != 23 : num1 不等于 num2
3 小于 25 且 23 大于 15 : 返回 true
3 小于 25 或 23 大于 25 : 返回 true

字符串运算符

shell基础语法的示例分析

编写脚本:

#!/bin/bashapple="apple"pen="pen"if [ $apple = $pen ]then echo "$apple = $pen : apple 等于 pen"else echo "$apple = $pen: apple 不等于 pen"fiif [ $apple != $pen ]then echo "$apple != $pen : apple 不等于 pen"else echo "$apple != $pen: apple 等于 pen"fiif [ -z $apple ]then echo "-z $apple : 字符串长度为 0"else echo "-z $apple : 字符串长度不为 0"fiif [ -n "$apple" ]then echo "-n $apple : 字符串长度不为 0"else echo "-n $apple : 字符串长度为 0"fiif [ $apple ]then echo "$apple : 字符串不为空"else echo "$apple : 字符串为空"fi

执行结果:

[root@iz2ze0ajic0vbv28hcdctpz ~]# ./string.sh
apple = pen: apple 不等于 pen
apple != pen : apple 不等于 pen
-z apple : 字符串长度不为 0
-n apple : 字符串长度不为 0
apple : 字符串不为空

逻辑运算符

shell基础语法的示例分析

编写脚本:

#!/bin/bashnum1=5num2=8if [[ $num1 -lt 10 && $num2 -gt 5 ]]then echo "返回 true"else echo "返回 false"fiif [[ $num1 -lt 10 || $num2 -gt 5 ]]then echo "返回 true"else echo "返回 false"fi

执行结果:

[root@iz2ze0ajic0vbv28hcdctpz ~]# ./logic.sh
返回 true
返回 true

文件测试运算符

shell基础语法的示例分析

编写脚本:

~ cat testfile.sh#!/bin/bashfile="/root/testfile.sh"if [ -r $file ]then echo "该文件可读"else echo "该文件不可读"fiif [ -x $file ]then echo "该文件可执行"else echo "该文件不可执行"fiif [ -w $file ]then echo "该文件可写"else echo "该文件不可写"fiif [ -f $file ]then echo "该文件是普通文件"else echo "该文件是非普通文件"fiif [ -s $file ]then echo "该文件为空"else echo "该文件不为空"fiif [ -d $file ]then echo "该文件是目录"else echo "该文件不是目录"fi

执行脚本:

➜  ~ ./testfile.sh
该文件可读
该文件可执行
该文件可写
该文件是普通文件
该文件为空
该文件不是目录

shell条件判断&流程控制

其实流程控制的本质是差不多的,只是在语法上稍微有些差别,本节我们来盘一盘。

单分支if

流程示意图:

shell基础语法的示例分析

举例:

➜ if cat if-one.sh#!/bin/basha=10if [ a > 5 ]then echo "a 大于 5"fi

执行结果:

➜  if ./if-one.sh
a 大于 5

双分支if

流程示意图:

shell基础语法的示例分析

举例:

➜ if cat if-double.sh#!/bin/bashage=18if [ $age -ge 18 ]; then echo "成年"else echo "未成年"fi

执行结果:

➜  if ./if-double.sh
成年

多分支if语句

流程示意图:

shell基础语法的示例分析

举例:

➜ if cat if-multi.sh#!/bin/bashmoney=10if [ $money -lt 1 ]then echo "1块钱都没有的比皮卡丘决定在家吃土"elif [ $money -ge 1 -a $money -lt 5 ]then echo "老板我要大白兔奶糖"elif [ $money -ge 5 -a $money -le 10 ]then echo "老板我要巧克力"else echo "老板给我拿个鸡腿"fi

执行结果:

➜  if ./if-multi.sh
老板我要巧克力

关于“shell基础语法的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: shell基础语法的示例分析

本文链接: https://www.lsjlt.com/news/255919.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • shell基础语法的示例分析
    这篇文章将为大家详细讲解有关shell基础语法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。不论前端还是后端,再学会Linux的基础上,还应该学会写一些简单的Shell。不止是工作,日常中想做一...
    99+
    2023-06-09
  • oracle基础语法的示例分析
    这篇文章主要介绍了oracle基础语法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Oracle数据库的初步学习数据库的安装及其配置,使用默认选项进行安装即可ora...
    99+
    2023-06-15
  • PHP7语言基础示例分析
    这篇文章主要介绍了PHP7语言基础示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。文章目录PHP标记PHP指令分隔符PHP注释常量PHP变量数据类型转换为布尔值转换为整...
    99+
    2023-06-14
  • Python入门之基础语法的示例分析
    这篇文章将为大家详细讲解有关Python入门之基础语法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.p...
    99+
    2023-06-15
  • C语言入门基础的示例分析
    这篇文章给大家分享的是有关C语言入门基础的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先上思维导图。如图所示,现在还是初识C语言的第一部分,本次只介绍了C语言本身特点,数据类型,常量变量,字符串转义字符...
    99+
    2023-06-20
  • Java基础的示例分析
    小编给大家分享一下Java基础的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、Java主要特点简单性、跨平台性、分布性、安全性、健壮性、平台独立与可移...
    99+
    2023-06-20
  • MySQL基础的示例分析
    这篇文章给大家分享的是有关MySQL基础的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MySQL入门mySQL (关系型数据库管理系统)MySQL是一个关系型数据库管理...
    99+
    2022-10-18
  • javaScript基础的示例分析
    这篇文章主要为大家展示了“javaScript基础的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javaScript基础的示例分析”这篇文章吧。首先讲...
    99+
    2022-10-19
  • node.js基础的示例分析
    这篇文章给大家分享的是有关node.js基础的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是NodeJSJS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在H...
    99+
    2022-10-19
  • Three.js基础的示例分析
    这篇文章给大家分享的是有关Three.js基础的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、Three.js官网及使用Three.js必备的三个条件1.Three....
    99+
    2022-10-19
  • Mysql基础示例分析
    这篇文章主要介绍了Mysql基础示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   这段时间,在做一个Web项目,需要使...
    99+
    2022-10-19
  • java基础之方法的示例分析
    这篇文章将为大家详细讲解有关java基础之方法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JAVA 异常分类及处理 异常分类Throwable 是 Java 语言中所有错误或异常的超类。下一层...
    99+
    2023-06-20
  • JavaScript基础之语法实例分析
    这篇文章主要介绍“JavaScript基础之语法实例分析”,在日常操作中,相信很多人在JavaScript基础之语法实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ja...
    99+
    2022-10-19
  • Go语言中基础闭包的示例分析
    这篇文章将为大家详细讲解有关Go语言中基础闭包的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 闭包概述闭包就是解决局部变量不能被外部访问的一种解决方案闭包是把函数当作返回值的一种应用二. 代...
    99+
    2023-06-25
  • MYSQL基础语法示例
    小编给大家分享一下MYSQL基础语法示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!用户管理新建用户及密码:foo为名,123...
    99+
    2022-10-18
  • MySQL基本语法的示例分析
    这篇文章将为大家详细讲解有关MySQL基本语法的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先来看一下MySQL的最基本三大段语句,举个例子:我想将下面inst...
    99+
    2022-10-18
  • css基本语法的示例分析
    这篇文章主要介绍了css基本语法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一 概述 CSS 指层...
    99+
    2022-10-19
  • Go语言基础类型及常量用法示例分析
    本篇内容介绍了“Go语言基础类型及常量用法示例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概述在 Go 编程语言中,数据类型用于声明函...
    99+
    2023-06-25
  • shell语法检查模式的示例分析
    这篇文章主要介绍shell语法检查模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!启用 verbose 调试模式在进入本指导的重点之前,让我们简要地探索下 verbose 模式。它可以用 -v ...
    99+
    2023-06-12
  • Java基础之Maven的示例分析
    这篇文章将为大家详细讲解有关Java基础之Maven的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Maven是什么?Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作