说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
目录
一丶shell介绍
二丶shell脚本规范
三丶shell语法
1.变量的使用
2.参数传递
3.重定向
4.程序结构
5.总结
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序
基本上shell分两大类:
1.图形界面shell(Graphical User Interface shell 即 GUI shell)
例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。
2.命令行式shell(Command Line Interface shell ,即CLI shell)
例如:
bash / sh / ksh / csh(Unix/linux 系统)
(MS-DOS系统)
cmd.exe/ 命令提示字符(Windows NT 系统)
Windows PowerShell(支持 .NET Framework 技术的 Windows NT 系统)
传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。
文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了
shell是一段应用程序,是用户和操作系统交互的一个桥梁,shell通常就是shell脚本
shell弱类型语言,在定义变量不需要指定变量的类型
1.shell脚本是以.sh结尾的文件
2..sh文件的第一行内容为#!/bin/bash---->表示使用shell进行编程
3.shell中的注释:#
1.变量名=变量值
2.变量命名规范
3.变量的释放
4.特殊的变量,带有空格的变量定义
5.练习
练习1:使用shell脚本,输出当前所在的目录
练习2:计算/etc目录下有多少个文件,用shell脚本实现
练习3:实现统计任何指定目录下的文件个数
1.向.sh文件中传递数据
2.格式
文件中接收参数的方式
$1:表示第一个参数
$2:表示第二个参数
$3:第三个参数
$n:表示第n个参数
$0:代表文件名
$@:显示全部参数
$#:显示参数的个数
示例1:
示例2:
示例3:
示例4:
示例5:
把命令的内容输出到文件中
1.正确的命令(数字1表示)
2.错误的命令(数字2表示)
1.分支结构
if...elif...else分支
a)格式
if [ 条件 ]
then
语句
else
语句
fi
if [ 条件 ];then
语句
else
语句
fi
b)注意
1.条件两边要有空格
2.多个条件间要有空格
3.if后面要有空格
4.条件中如果存在变量,那么变量的两边要有双引号,如:name="cdtaogang"---->echo $name, N="cdtaogang"
示例1:
示例2:
示例3:逻辑运算符
示例4:数字间比较--->比较运算符
知识点:-eq:判断是否相等,-ne:判断是否不相等,-gt:判断是否大于,-ge:判断是否大于等于,-lt:判断是否小于,-le:判断是否小于等于
数字变量操作:((i++)) ((i+=1)) i=$[$i+1] let i=i+1 i=$(($i+1))
示例5:
知识点:测试文件的状态test 参数 变量名
参数:-e表示文件是否存在,-f表示文件是否存在且为文件,-d表示文件名是否存在且为目录,-r 可读,-w 可写,-x 可执行
if...elif...else分支
a)格式
if [ 条件 ]
then
语句
elif [ 条件 ]
then
语句
elif [ 条件 ]
then
语句
....
else
语句
fi
示例1:
示例2:文件判断
涉及知识点:-r filename 文件是否存在且可读,-w filename 文件是否存在且可写, -x filename文件是否存在且可执行,-f filename 文件是否存在且是普通文件,-d filename 文件是否存在且是一个目录,-e filename 文件是否存在,-n str1 字符串长度是否不等于0,-z str2 字符串长度是否等于0
case分支
a)格式
case $变量名 in
"值")
语句;;
"值")
语句;;
"值")
语句;;
.....
*)
语句;;
esac
b)注意
1.case这一行最后必须为in
2. ;;---->结束语句
3.*---->默认
4.esac--->case语句的结束
5.值可以是字符串也可以是数字
6.“值”还可以是区间范围,范围[0-9]
示例1:
示例2:
2.循环结构
a)for循环
b)格式
for 变量名 in 列表
do
语句
done
示例1:
示例2:改进版
示例3: