Shell是一种命令行解释器,是用户和和操做系统沟通的桥梁,想象下,若是把操做系统内核比做人的大脑,那么shell就像人的躯壳,经过眼口等与外界交流信息。
Shell它接受来自用户输入的命令,而后将这些命令转化成一系列的系统调用送到内核执行,最后将结果输出给用户shell
Shell不仅是一种解释器,仍是一种编程工具,称为脚本语言
编译型语言
编译工具先将程序编译成机器认识的可执行文件,(好比Windows下的exe文件,Linux下的二进制可执行文件),以后运行时直接运行编译后的文件,所以通常来讲编译型语言执行速度较高,常见的编译型语言有:C/C++、Java编程
解释型语言
解释型语言是运行时翻译,执行一条语句就当即翻译一条,并且每次执行程序都须要进行解释。bash
交互模式
和Python相似,shell也有交互模式,其实在咱们使用远程链接工具链接Linux时,就是进入了shell交互模式工具
脚本模式
将要执行的命令都放在一个文件中,而后由Bash Shell读取并执行
#!/bin/bash
# this is a test
echo 'hello world'
第一行
Shell脚本的第一行最好是以 "#!" 开头,这个是脚本开始的标记,告诉系统执行使用某个解释器,后面的路径指示具体的路径
第二行
这行是一个注释
第三行
一个简单的输出命令this
第一种:将脚本做为命令行参数
bash test.sh
或者完成路径:
bash /home/pyvip/test.sh操作系统
第二种:脚本独立运行
在脚本第一行添加:
#!/bin/bash
给脚本添加可执行权限:
chmod 744 test.sh
运行:
./test.sh命令行
命令行参数形式
这种形式能够不用给脚本添加可执行权限,能够直接运行,通常本身写的shell脚本会采用这种形式来运行
独立运行
这种形式须要脚本拥有可执行权限,若是没有,须要添加执行权限翻译
Shell变量
Shell中的变量和Python中的变量相似,无需指定变量类型
变量命名
Shell中的变量必须以字母或者下划线开头,后面能够跟数字、字母和下划线,在shell中变量区分大小写
变量赋值
Shell中变量的赋值十分简单,直接“ 变量名=变量值 ”,尤为要注意的是在shell中“=”号两边没有空格3d
变量的取值
在shell中要使用shell,直接调用变量名是得不到变量值的,须要在变量名面前加上 $ 符号,固然更加严谨的作法是使用: ${}blog
局部变量
局部变量就是值在某个shell中生效的变量,不会影响其余的shell
环境变量
环境变量又称为“全局变量”,在shell脚本中,默认变量就是全局的。
环境变量能够用在建立变量的shell和从该shell派生的任意子shell或进程中。
在Bash中有不少的预设环境变量
取消变量
在shell中,对于已经定义好的变量,若是想取消这个变量,须要使用 unset 命令
Shell中还有一些特殊的变量,灵活使用这些特殊的变量,可让shell脚本更加灵活
位置参数
Shell中有一些预先定义的特殊只读变量,他们的值只有在脚本运行时才能肯定,位置参数就是其中的一种,$0表明脚本自己,$1表明第一个参数,依次类推
脚本或命令返回值:$?
在shell中,任何一个命令执行事后都会有一个返回值,这个返回值会指示上个命令的执行状态,经过返回值就能够知道上一个命令是否正确执行
Shell内建命令,就是由Bash自身提供的命令,而不是其余地方提供的可执行文件
例如:cd
除了这些内建命令以外,常见的还有:echo exit export kill pwd 等