Shell脚本基础详解

Shell脚本基础详解

Shell脚本
是一个脚本语言,用来自动执行我们指定的系统命令的。
通俗的讲,再shell脚本当中,我们会编写一些需要使用的系统命令于其中再运行这个叫本的时候,这些被编写进去的系统命令会按照书写的顺序及规则以此运行。

包括后期我们要学的python实际原本也是通过shell演变过去的!!

学习一们语言首先我们要先了解什么叫变量@
在很多的编程语言当中都会有变量这样一个概念性的名词。
变量实际上是一个抽象的概念。它本身并没有任何意义。只作为一个名称来使用这个名称指代表了什么呢?
我们如果想要在脚本或程序当中设定一个值。那麽这个置会再脚本运行得到时候起作用。在脚本停止运行的时候,们就不再起到作用了。那麽这个值我们说他一定存储再内存当中。

内存当中存储数据,一般想要去查找他,需要指定内存空间的地址信息。就好想通过街道名称,门牌号

自定义变量
变量设置方法
变量名=变量值

一般来说,我们我们给变量齐名的时候有一些规范需要知道!
通常名称不能用纯数字,也不能用数字开头,可以是a-z或者A-Z会数字或下划线组合而成!

如果我们再linux的命令行当中设定一个新的变量abc,并将他赋值为123.那麽应该如何书写:
Abc=123
那麽我们如何验证呢:
Echo $变量名
Echo $abc

如何取消变量名呢:
Unset 变量名
Unset abc

变量调用:
$变量名
$abc

环境变量
$PATH
$PWD
$UID
环境变量不许自行修改!!
Path变量如果更改为空,则所有的外部命令都会不能用
$path默认的值是不允许我们随意改变,他的默认值如下面修改记得改回来
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/root/bin

位置变量
Echo第一个参数是$1
编写脚本myFirstShellScript.sh
在这里插入图片描述
./执行这个脚本没有任何作用!
在后面需加入参数!例子::
在这里插入图片描述

$?保存上一条命令的返回值
如果上一条命令正常运行则返回时为0
如果上一条命令非正常运行则返回值非0
在这里插入图片描述
$#输出总数
去脚本文件添加如下内容
在这里插入图片描述
然后执行命令:
在这里插入图片描述
$*记录在运行脚本时输入的所有参数内容!!!
去到脚本文件添加这个内容
在这里插入图片描述

实例:
在这里插入图片描述
练习:
输出./first.sh
获得:
#########!
总共有5个参数!
第一个参数是111
所有参数:111 222 333 444 555
在这里插入图片描述
输出:
在这里插入图片描述
单双引号包裹的解译:
在这里插入图片描述
在这里插入图片描述
为什么abc没有输出出来
需在调用它之前
变量一下abc
在这里插入图片描述
就可以输出出来了!!!

·····反点号用来包裹命令·····
在这里插入图片描述
它可以让一段命令代码另外一个命令代码当中去运行
Read用来让用户进行输入操作,并将用户输入的内容复制给read后指定的变量
在read使用过程当中,我们为了更加人性化,需要
Read -p “提示内容” 变量名
接受用户输出的内容赋值内容
Export全局变量
在全局变量都能使用,作用就是linux全局
使用方法
A=1 (普通设置变量方法)
Echo

想要运行全局的export需要先source+shell脚本的绝对路径!然后echo就可以看见123了!!!
在这里插入图片描述
在这里插入图片描述
Expr 相当于linux里面的bc计算器!!!
在这里插入图片描述
Abc=10 cde=20

$RANDOM
取值范围是0-32767(有符号的16-bit)

测试语句:
【 -d /etc 】测试是否是目录语句
【 -e /etc 】测试目录或文件是否存在
【 -f 目标文件或目录 】测试目标是否是文件
【 -r 目标 】判断当前用户对指定文件是否存在
【 -w 目标 】判断当前用户对指定文件是否有写权限
【 -x 目标 】判断当前用户对指定文件是否有运行权限
注意这里的-r/-w/-x并不直接等于文件属性上显示的rwx。如果我们看/etc/shadow文件的话,本身权限是“———”,但是root用户登录的情况下我们使用上面的命令去查询这个文件是否有rwx权限,则会获得返回值0.也就是说我们有权限修改。原因无他,只因为我们是root用户!!!!

我们可以加上&&符号上面的操作一步完成,后面加上的echo“yes”代表如果前面的命令成立的话,则返回“yes”
【 -d/wang 】&& echo“yes”
返回yes
在这里插入图片描述
整数值比较
【 整数1 操作符 整数2 】
-eq: 等于 equal “=“
-ne: 不等于 not equal “≠“
-gt: 大于 greater than “>“
-lt: 小于 lesser than “<“
-ge: 大于等于 greater or equal “≥“
-le: 小于等于 lesser or equal “≤“

使用案例:::
在这里插入图片描述
显示效果和上面一样!!!

字符串的比较
字符和字符串
在这里插入图片描述
在这里插入图片描述
If判断语句
If条件测试操作
Then命令序列
Fi
尝试:让用户输入一个数字,与变量ram

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101760.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 工业超纯水机:EDI超纯水设备技术介绍

    EDI超纯水设备技术是国际上20世纪90年代开始逐渐发展起来的新型纯水、超纯水制备技术。该技术巧妙地将电渗析技术和离子交换技术相融合,通过阴、阳离子的选择性透过作用与离子交换树脂对离子的交换作用,在直流电场的作用下实现离子的定向迁移,从而完成水的深度除盐,同事水电离解产生的氢离子和氧根离子对离子交换树脂进行再生,因此不需酸碱化学再生而能连续制取超纯水。  EDI设备特点  EDI系统运

    2022年4月6日
    81
  • rabbitmq集群搭建_mongodb集群搭建

    rabbitmq集群搭建_mongodb集群搭建先来介绍一下RabbitMQ集群RabbitMQ集群有两种模式,一种是普通模式,即默认的集群模式,另外一种为镜像模式,可以把队列做成镜像队列我们在学习两种模式之前,先来了解下一些关于RabbitMQ集群的概念元数据:包括队列元数据,交换器元数据,交换器元数据,vhost元数据(1)队列元数据:队列名称和它的属性;(2)交换器元数据:交换器名称、类型和属性;(3)绑定元数据:一张简…

    2025年9月5日
    6
  • 原地算法矩阵置0_矩阵归一化处理步骤

    原地算法矩阵置0_矩阵归一化处理步骤给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matrix

    2022年8月8日
    6
  • 无刷直流电动机驱动控制系统_直流无刷电机驱动电路

    无刷直流电动机驱动控制系统_直流无刷电机驱动电路无刷直流电动机利用电子开关线路和位置传感器来代替有刷直流电机电刷和换向器,使其同时具有直流电动机和交流电动机的优良特性。无刷直流电机(驱动系统)主要由电动机本体、位置传感器、电子开关线路三部分组成。

    2022年10月21日
    4
  • python unix时间戳_python24小时12小时转换

    python unix时间戳_python24小时12小时转换#-*-coding:utf-8-*-importtimedeftimestamp_datetime(value):format=’%Y-%m-%d%H:%M:%S’#value为传入的值为时间戳(×××),如:1332888820value=time.localtime(value)##经过localtime转换后变成##time.struct_time(tm_yea…

    2022年10月2日
    2
  • Origin 2018中文版软件下载和安装教程|兼容Win10(上)

    Origin 2018中文版软件下载和安装教程|兼容Win10(上)

    2022年5月2日
    81

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号