一.SHELL
Shell程序的特点
1.简单易学
2.解释性语言,无需编译即可执行
起源:
1964年,美国AT&T公司的贝尔实验室、麻省理工学院及美国通用电气公司共同参与开始研发一套可以安装在大型主机上的多用户、多任务的操作系统,该操作系统的名称为Multics。
1970年,丹尼斯•里奇和汤普逊启动了另外一个新的多用户、多任务的操作系统的项目,他们把这个项目称之为UNICS。
1973年,使用C语言重写编写了Unix。通过这次编写,使得Unix得以移植到其他的小型机上面。
1979年,第一个重要的标准UNIX Shell在Unix的第7版中推出,并以作者史蒂夫•伯恩(Stephen Bourne)的名字命名,叫做Bourne Shell,简称为sh。
20世纪70年代末,C Shell作为2BSD UNIX的一部分发布,简称csh。
之后又出现了许多其他的Shell程序,主要包括Tenex C Shell(tcsh)、Korn Shell(ksh)以及GNU Bourne-Again shell(bash)。
功能:
Shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统。它的作用类似于Windows操作系统中的命令行,但是,Shell的功能远比命令行强大的多。在UNIX或者Linux中,Shell既是用户交互的界面,也是控制系统的脚本语言
分类:
Bourne Shell:标识为sh,该Shell由Steve Bourne在贝尔实验室时编写。在许多Unix系统中,该Shell是root用户的默认的Shell。
Bourne-Again Shell:标识为bash,该Shell由Brian Fox在1987年编写,是绝大多数Linux发行版的默认的Shell。
Korn Shell:标识为ksh,该Shell由贝尔实验室的David Korn在二十世纪八十年代早期编写。它完全向上兼容 Bourne Shell 并包含了C Shell 的很多特性。
C Shell:标识为csh,该Shell由Bill Joy在BSD系统上开发。由于其语法类似于C语言,因此称为C Shell。
二:Shell的执行方式
Shell脚本程序是一种交互式程序,有两种执行方式:
- 交互式执行
- 作为程序文件执行
脚本里面可以传参
执行方式:交互式执行
$表示变量
例1-1
交互式程序
[root@localhost ~]# for filename inls /etc/
do
if echo “$filename” | grep “xml”then
echo “$filename”
fi
done
效果等同于 ls /etc/ |grep xml
三.创建脚本:
对于一组需要经常重复执行的Shell语句来说,将它们保存在一个文件中来执行。我们通常称这种包含多个Shell语句的文件为Shell脚本,或者Shell脚本文件。脚本文件是普通的文本文件,可使用任何的文本编辑器查看或修改Shell脚本。
#!/bin/bash 命令解释器
默认文件名 xxx.sh
第一行的#!具有特殊含义:指定命令解释器
后面的#表注释
./表执行 严格执行文件,执行文件中的命令解释器
sourse也可以表示执行 执行当前目录下默认的命令解释器
Ls -l查看文件权限属性
/usr/local/bin 特殊目录 放置命令,可执行文件,脚本需要普通用户执行,可放在此目录下,修改权限755 输入脚本文件名,可直接执行
例1-2
#!/bin/bash
#for循环开始
for filename in `ls /etc/ `
do
#如果文件名包含xml
if echo "$filename" | grep "xml"
then
#输出文件名
echo "$filename"
fi
done
结果与例1-1效果相同
三:向SHELL脚本传参
双引号引起表一个整体,单引号仅表示字面含义
例1-3
#!/bin/bash
echo "$# parameters"
echo "$@"
未传参时可看到命令行个数为0,也就没有返回参数值
此时向脚本里传了两个参数,双引号“”内代表一个参数。