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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql清空表数据_mysql数据库之如何清空表中数据「建议收藏」

    mysql清空表数据_mysql数据库之如何清空表中数据「建议收藏」本篇文章主要讲述的是在数据库中使用清空命令,具有一定学习价值,有需要的朋友可以了解一下,希望能够对你有所帮助。在做数据迁移,数据清洗或者写web项目时要将数据替换更新,那么有时要将表做清空处理常用的清空数据表的SQL语句有如下两种deletefrom表名;truncatetable表名;运行测试我使用的是MySql待测试的表有20000条记录,将其多拷两份以备测试分别运行两个清空表的SQL…

    2022年6月11日
  • Linode 遭受大规模DDoS攻击

    Linode 遭受大规模DDoS攻击美国当地时间12月29日,专用虚拟服务器提供商Linode遭到DDoS攻击,截至到本文发布时其web服务的访问仍受影响,其中API调用和管理功能依然部分不可用。Linode称正在努力尽快恢复正常访问服务。\\早在2013年就有过Linode就遭到大规模DDoS攻击。在HackNews上的讨论中,有人认为Linode在安全建设方面多有疏忽,并且和ISP缺乏配合,从而导致此次DDoS攻击影响过甚。\…

    2022年7月12日
  • Python udp编程_python socket udp

    Python udp编程_python socket udpTCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议。使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。我们来看看如何通过UDP协议传输数据。和TCP类似,

    2022年9月7日
  • 谷歌创始人是谁_谷歌创始人的故事

    谷歌创始人是谁_谷歌创始人的故事·布林更多的关注。最新一期的《莫斯科新闻》称,如果举世瞩目的诺贝尔奖设有IT奖的话,这位脸上总是挂着招牌式微笑的年轻人注定是该奖项最有竞争力的人选。他创建的Google成为人们使用互联网的一种重要方式,使每个人与很多问题的答案之间只有点击一下鼠标那么远,Google正像当年的甲壳虫乐队那样风靡全球。  谢尔盖·布林出生在前苏联一个犹太人家庭。5岁那年,布林跟随父母一起移民美国,从而开始了他美

    2022年9月1日
  • 不能复制文字的网页文字复制怎么办_实现网页布局的方法

    不能复制文字的网页文字复制怎么办_实现网页布局的方法想必很多小伙伴遇到过这样的情况,在网上查找很多的资料,但是因为网页本身的限制不允许复制或者需要付费:遇到这种情况应该怎么办呢?接下来,就和大家分享下如何免费复制网页上不能复制的文字!解决方法一:转到打印界面进行复制:在需要复制文字的界面鼠标右键选择打印或者使用快捷键Ctrl+P,打开打印界面,在打印界面就可以进行复制操作啦!解决方法二:源代码界面复制在需要复制文字的界面鼠标右键选择“查看网页源代码”或者使用快捷键Ctrl+U,打开源代码界面,在源代码界面找到自己要复制的内容复

    2022年10月13日
  • SQLyog客户端无法连接mysql「建议收藏」

    SQLyog客户端无法连接mysql「建议收藏」忘记截图了,只能描述下报错信息:Host ‘服务器地址’ is not allowed to connect to this MySQL server解决方法:添加用户权限1.登录服务端mysql2.在mysql输入命令GRANT ALL PRIVILEGES ON *.* TO ‘root’@’IP地址’ IDENTIFIED BY ‘你设置的密码’ WITH GRANT O…

    2022年8月18日

发表回复

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

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