什么是 Shell,
Shell既是一种命令语言,又是一种程序设计语言。
作为命令语言,它交互式地解释和执行用户输入的命令;
作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
Shell 命令的两种执行方式
交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
Shell分类
- bash 是 Linux 标准默认的 shell。
- sh 由 Steve Bourne 开发,是 Bourne Shell 的缩写,sh 是 Unix 标准默认的 shell。
- ash shell 是由 Kenneth Almquist 编写的,Linux 中占用系统资源最少的一个小 shell,它只包含24个内部命令,因而使用起来很不方便。
- csh 是 Linux 比较大的内核,它由以 William Joy 为代表的共计47位作者编成,共有52个内部命令。该 shell 其实是指向 /bin/tcsh 这样的一个 shell,也就是说,csh 其实就是 tcsh。
- ksh 是 Korn shell 的缩写,由 Eric Gisin 编写,共有42条内部命令。该 shell 最大的优点是几乎和商业发行版的 ksh 完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。
Shell 与编译型语言的差异
编译型语言
这类语言需要预先将源代码(source code)转换成目标代码(object code),这个过程被称作“编译”。执行效率很高。
解释型语言
解释型语言也被称作“脚本语言”。执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。效率有所下降。
第一个 Shell 脚本
[root@bogon shell]# vim 01.sh
[root@bogon shell]# cat 01.sh
#!/bin/bash
echo "Hello World !"
“#!” 指定shell解释器类别
运行 Shell 脚本两种方法
第一种:作为可执行程序
[root@bogon shell]# chmod a+x 01.sh
[root@bogon shell]# ./01.sh
Hello World !
第二种:作为解释器参数
[root@bogon shell]# sh 01.sh
Hello World !
[root@bogon shell]# /bin/sh 01.sh
Hello World !
示例脚本:
#!/bin/bash
# 功能: 控制台输入输出测试
# 作者: 战神悟空
# 日期: 2017-06-17
echo "是否要执行该程序(Y/N)?"
read INPUT
echo "Hello, $INPUT"
执行示例脚本:
[root@bogon shell]# sh 02.sh
是否要执行该程序(Y/N)?
Y
Hello, Y