Shell脚本
Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高
Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言(就是你所说的shell脚本)。作为命令语言,它互动式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
1、 脚本命名
*.sh
2、命名变量
1)自定义变量
Name=zhangsan
2)#env
大写字母
3)$
#echo $name
#echo $PATH
4)作用域
默认自定义变量----局部
通过调用多个shell进程
打开shell-----父
再次打开shell----子
#env
SHLVL==shell level
#export
5){}
#name=zhangsan
#echo{$name}isastudent
6)> >>输出
< << 输入
<<:指定终止的符号
#cat <&0 表示接收来自键盘的输入
#cat <file 表示接收来自文件的输入
at <file –m
系统在接收输入输出内容存在方向
输入输出描述符:
输入:键盘 0
输出:屏幕 1
错误输出:分离 2
临时符号---起过渡作用3-9
/dev/null-----虚拟出来的一个设备(黑洞)
String = <<<HELLO
7)read---从键盘读取变量的值
注意当变量的数量和值的数量不一致的情况
#read 变量名
8)常见参数
$?-----表示显示最近一条命令的执行状态
状态分类:
退出状态0:表示成功
退出状态1:表示失败
条件:
test 操作数1 操作符 操作符2
test 1>2
操作符:
数值类型数据比较
字符串类型数据比较
文件类型数据比较
[]:代替test
注意括号和命令之间要加空格
[ -x file ]
. 脚本文件
Sh 脚本文件
./脚本文件
双引号:解释变量
单引号:当做字符串显示
$#:参数的总的数量
$*:显示所用参数
$1:各个参数
$9:
Shift n :将参数向前移位n位
9)流程控制结构
If 条件
Then
执行命令
Elif 条件
Then
。。。
Else
。。。
Fi
File5.sh
执行命令的状态也可以当做条件
$?----
内核通过接受命令退出时返回的数字,判断是否成功
Exit 100
测试接受参数的
如果接受的参数小于三个,提醒。。。
如果接受的参数大于三个,显示参数
接受参数可以当条件
环境变量也可以当条件
如果是root身份登录,提示。。。
如果不是root,提示。。。
Case语句:
语法
Case 值 in
模式1)
命令1
。。。
。。。
;;
模式2)
命令1
。。。
。。。
;;
。。。
。。。
Esac
提醒:模式里可以使用通配符
Shell脚本是给内核看
For循环
语法:
For 变量名 in 列表
Do
命令
Done
Until
Until 条件
Do
命令
Done
While
While 条件
Do
命令
Done
Break
Continue
#!/bin/bash
While :
Do
Echo –n “please input number 1 to 5”
Read num
Case $num in
1|2|3|4|5)
Echo “ok”
;;
*)
Echo “error”
Break
;;
Esac
Done
Break:终止当前命令
Continue:终止当前次循环
计算:
Expr 表达式
$((…..表达式…….))
函数:定义 使用
应用