当前位置:   article > 正文

shell基础_在shell下运行的编译器有哪些类型

在shell下运行的编译器有哪些类型

什么是shell

shell是一个命令解释器,提供用户和机器之间的交互
支持特定语法,比如逻辑判断,循环
还有zsh,ksh等
centos7默认的shell为bash(Bourne Agin Shell)
shell是一个用c语言编写的程序语言,它是用户使用linux的桥梁,shell既是一种命令语言,又是一种程序设计语言
shell是一种解释型语言,这种语言经过编写后不经过任何编译就可以执行,是一种脚本语言。和编译型语言是执行前翻译不同,解释型语言的程序是执行时翻译,所以效率差一些

编译型语言和解释型语言
编译型语言
  • 优点
    编译器一般会有预编译的过程对代码进行优化,因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行
  • 缺点
    编译之后如果需要修改就需要整个模块重新编译。编译时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件

代表语言:C,C艹,Pascal,Object-C,swift等

解释型语言
  • 优点
    有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护
  • 缺点
    每次运行都要解释一遍,性能上不如编译型语言

代表语言:javaScript,Python,Erlang,PHP,Perl,Ruby

编写第一个shell脚本:
在这里插入图片描述
运行脚本有两种方法
1)使用bash执行
在这里插入图片描述
在这里插入图片描述
2)给脚本添加可执行权限,然后直接执行
在这里插入图片描述
脚本是各种命令的集合,终究还是要执行服务的
查看命令存储路径
在这里插入图片描述

变量

顾名思义,变量就是其值可以变化的量。从变量本质来说,变量名是指向一片用于存储数据的内存空间。变量有局部变量和环境变量之分。在脚本中往往需要使用变量来存储有用的信息,比如文件名,路径,数值等,通过这些变量可以控制脚本的运行行为

局部变量

是指在某个shell中生效的变量,对其他shell来说这个变量无效,局部变量的作用空间被限制在声明它们的shell里,可以用local内建命令来"显式"的声明局部变量,但仅限于函数内使用

环境变量(全局变量)

在shell脚本里变量默认就是全局的,为了让子shell继承当前shell的变量,可以使用export命令将其定义为环境变量
定义变量:变量名=变量值

设置环境变量的方法

第一种
第一种
第二种
第二种
变量命名
shell中的变量必须以字母或者下划线开头,后面可以跟数字,字母和下划线,长度没有限制,区分大小写

特殊变量

上边我们说明了局部变量和环境(全局变量)也知道了它们的特点,除了这些还有一些其他的变量,也需要我们注意

只读变量(常量)

只能声明,但不能修改和删除

还可以使用declare -r声明常量
在这里插入图片描述

括号的使用

小括号用法:一次性使用,不会对环境产生影响
在这里插入图片描述
大括号用法:前后有空格,这个对全局都有影响
在这里插入图片描述

位置变量

shell中还有一些预先定义的特殊只读变量,它们的值只有在脚本运行时才能确定
$0:代表脚本本身名字
$1------$9:第一个位置参数-------第九个位置参数
$#:脚本参数个数总和
$@:表示脚本的所有参数
$*:表示脚本的所有参数

在这里插入图片描述

在这里插入图片描述
那么这个有什么用呢?举个例子:
假如我们要复制一个文件到另一台机器
就可以用脚本来写啦


$* 和 $@ 的区别

$ *和$ @都代表了脚本的所有参数,但是,$ *会把显示的结果当做一个整体显示,而$ @会把收集到的结果分开显示。不过要注意,如果$ *和$ @有双引号的前提下,显示效果会做区分,如果都没有双引号,效果一样

$0引用名称的使用

$0是脚本名称,那么如果给一个脚本添加一个软连接,这个时候如果再运行脚本,那么它$0显示的名字应该是原来的名字还是更改过后的名字呢
在这里插入图片描述
我们以后就可以利用这一点,即便是同一个脚本,到时候也可以扩展出不同的功能,不过也要注意对$0做判断了

shift命令:整体往左位移

默认移动一位,可以通过设置决定移动多少位,在shift后边加上想要移动的位数即可

退出状态

进程使用退出状态来报告成功或者失败
$?变量保存最近命令的退出状态,0代表成功 1-255代表失败
如下:

在这里插入图片描述
我们可以使用$?判断上一条命令是否执行成功,但在脚本里的命令往往是多于一条的
只有一条命令的脚本

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/154355
推荐阅读
相关标签