Shell程序设计
1、 shell功能:执行命令()、调用Linux工具(ls)、执行shell脚本
2、 >:重定向输出:将输出流重定向到指定文件
Ls –l > lsoutput.txt
>>:追写
标准流:0:标准输入流,1:标准输出流,2:标准错误输出流
3、<:重定向输入:
4、管道:|
Ps| sort | more
解释:将ps的输出流当做sort 的输入
将sort的输出流当做more的输入
二、编写shell脚本
1.工具的组合
2.第一行#!/bin/sh 告诉系统该脚本由/bin/sh来执行
3.使用脚本:1.用shell 打开shell脚本:/bin/shfirst
2.添加可执行权限,chmod+x first
4.shell语法:
1.变量
1.$:访问变量的值(直接替换成变量所代表的值),=:赋值号两边不出现空格
在遇到$name 时直接替换成name的值(shell需要多一步$转换变量成变量值)
2.引号:””会替换成变量值,’’不会替换成变量值,\:转义字符
3.环境变量:$0:脚本名字,$#:参数个数(不含$0),$$:进程号
参数变量:$1,$2:第一个参数,$*,$@:参数列表(从$1开始),有所不同
2.条件
1.test,[]:和if 配合使用,比较选项:字符串(=,!=-n,-z),算术(-eq,-ne,-ge,-gt,-lt,-le,!),文件(-f,-d,-x,-r…)
3.控制
1.if [ .. ]//当test为真时执行then
Then
Elif [ … ];then//同行写then要加;
else
Fi
2 .for v(参数中一个临时变量) in vs(参数表)
Do
..$v(使用临时量的值)
Done
3. while [ .. ]
Do
…
Done
4 until [ .. ]//反复执行,直到条件为真(当第一次就为真时,不进入循环体)
Do
Done
5 case “$v” in//匹配变量v的值
正则模式1|模式2|模式3) 多条执行语句 ;;//)分隔匹配模式和执行语句,;; 表示下一个模式
.. 模式允许用|表示或者
Esac
6. 条件列表:&& ,||
注意执行时的短路
7.{},语句块
4.函数
1 脚本和程序:合理选择分解成多个小脚本还是函数
2 f_name()
{
}
3 传参数:f_name “$2” p2//调用函数,且传递脚本参数2成为函数参数1
$1,$*:在函数里表示函数的参数()
4 返回值:return 0(true)1(false)
5 命令
. 不使用子shell,而是在当前shell执行
Eval 让字面量变成代码来执行
Exec 用其他命令替换shell,其后命令都不在执行
Export export v:变量v能够在子shell中使用
Expr x=$(expr $x + 1),expr对接受的参数当做表达式求值,用$取该值给x赋值
Printf 像c一样格式化输出
Set set $(date) 将date的值做为参数列表
Shift 左移参数列表
Trap 指定接收到信号后的代码
Unset 删除自定义变量/函数
Find 查找符合的文件
Grep 对文件查找符合正则模式的行
6 命令的执行
X=$(command): 执行command并赋值
X=$((…)): 执行算术表达式并赋值
${v}abc: 参数扩展成v的值+abc,接受#,##,%,%%等选项
Here文档重定向 !funky!文档内容!funky!
7.调试:
Sh选项
Set 选项
8.图形化界面dialog