Linuxshell脚本编写基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LinuxShell脚本编写基础NetentSecQA功能组Page2LinuxShell脚本编写基础◆第一章Shell简介◆第四章控制流结构◆第三章shell输入与输出◆第二章变量和运算符◆第五章文本过滤Page3第一章Shell简介Page4LinuxShell脚本编写基础-第一章shell简介◆什么是shell◆Shell脚本的开头◆怎样执行shell脚本◆简单例子Page5LinuxShell脚本编写基础-第一章shell简介ƒShell是核心程序(kernel)之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。ƒ操作系统与Shell-输入指令(命令)-解释器解释指令-调用操作系统系统调用,获得结果-解释器将结果返回给用户(命令)ƒ操作系统上的Shell-MSDOS:command.com-Windowsxp(2000):cmd-Linux:ash,csh,BashPage6LinuxShell脚本编写基础-第一章shell简介ƒShell的类型ash、bash、ksh、csh等--cat/etc/shellscat/etc/shells#得到系统中有哪些shell--echo$SHELLecho$SHELL#得到系统目前运行在哪个shell下ƒ使用shell的原因:-Shell是用户与操作系统之间的接口,是交互式的-预先重复的指令可以保存在文件中-可以编程,使得程序流程自动化-长期使用的指令可以流程化、自动化-组合、编辑指令,构建自己的新指令-脚本是编程语言,变量、语句和函数能够处理更复杂的任务Page7LinuxShell脚本编写基础-第一章shell简介ƒ开头程序必须以下面的行开始(必须放在文件的第一行):#!/bin/bash#!/bin/bash符号#!用来告诉系统它后面的参数是用来执行该文件的程序。例子中我们使用/bin/bash来执行程序。ƒ注释在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用以及工作原理。Page8LinuxShell脚本编写基础-第一章shell简介ƒ例子(使用编辑器vi创建一个脚本)#!/bin/bash#!/bin/bash##helloworld.shhelloworld.sh#printHelloworld#printHelloworlda=helloworlda=helloworldecho${a}echo${a}ƒ执行helloworld.sh##增加执行权限增加执行权限chmodchmod+x+xhelloworld.shhelloworld.sh##执行脚本执行脚本././helloworld.shhelloworld.shPage9LinuxShell脚本编写基础-第一章shell简介ƒ顺序执行Command1;command2;command3…ƒ检查执行Comman1&&command2Command1执行成功后执行command2cpabcdef&&echodef&&echo““copyisokcopyisok””Command1||command2Command1执行失败后执行command2touch/etc/touch/etc/tests.conftests.conf||exit||exitƒ命令组合(command1;command2)((lslscd&&ll)&&(echocd&&ll)&&(echook!)ok!)当前shell执行或在子shell执行Page10LinuxShell脚本编写基础-第一章shell简介ƒ简单调试-在脚本中增加echo语句-在脚本中增加read语句ƒ复杂调试-Shell提供的特殊参数--v当输入行读入时打印--x显示扩展命令和参数的值Page11LinuxShell脚本编写基础-第一章shell简介ƒ课后作业-自己尝试编写一个脚本,并运行。Page12第二章变量和运算符Page13第二章变量和运算符ƒ什么是shell变量?-放在内存中的一定存储单元,存储单元中存放变量的值,这个值是可以改变的。ƒ变量有哪些?-本地变量-环境变量-位置变量-标准变量-特殊变量Page14第二章变量和运算符ƒ本地变量-是用户现在的shell脚本生命周期中使用的变量;在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:#!/bin/bash#!/bin/bash##对变量赋值:对变量赋值:a=a=““helloworldhelloworld””##现在打印变量现在打印变量aa的内容:的内容:echoecho““Ais:Ais:””echo$aecho$aPage15第二章变量和运算符ƒ本地变量(续)有时候变量名很容易与其他文字混淆,比如:num=2num=2echoecho““thisisthe$thisisthe$numndnumnd””这并不会打印出“thisisthe2nd”,而仅仅打印“thisisthe”,因为shell会去搜索变量numnd的值,但是这个变量是没有值的。可以使用花括号来告诉shell我们要打印的是num变量:num=2num=2echothisisthe${echothisisthe${num}ndnum}nd这将打印:thisisthe2ndPage16第二章变量和运算符ƒ环境变量由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。环境变量用于所有用户进程(经常称为子进程)。登录进程为父进程,shell中执行的用户进程称为子进程。不像本地变量(只用于现在的shell)环境变量可以用于所有子进程,包括编辑器、脚本和应用。使用export进行设定例如:exportTEST=exportTEST=““beijingbeijing””使用env进行查看所有环境变量。Page17第二章变量和运算符ƒ变量替换用变量的值替换它的名字在变量名前加$,使用echo命令可以显示单个变量的取值。例如:test=test=““thisisatestthisisatest””echo$testecho$testPage18第二章变量和运算符${name}显示实际值到name${name:+value}如果设置了name,则显示值value,否则,为空${name:?value}如果未设置name,显示用户定义错误信息value${name:-value}如果未设置name,则显示值value${name:=value}如果未设置name,设置其值value,并显示ƒ变量替换(续)Page19第二章变量和运算符ƒ变量清除格式:unset变量名例如:test=test=““thisisatestthisisatest””echo${test}echo${test}得到结果:Thisisatestunsettestunsettestecho${test}echo${test}得到结果:空白Page20第二章变量和运算符ƒ位置变量位置变量表示:$0,$1……$9ƒ向脚本中使用位置参数向系统命令传递参数例子:parameter.shparameter.shparameter2.shparameter2.sh$0$1$2$3$4$5$6$7$8$9脚本名字abcdefPage21第二章变量和运算符ƒ特殊变量$#(传递到脚本的参数个数)$*(以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可以超过9个)$$(脚本运行的当前进程ID号)$!(后台运行的昀后一个进程的进程ID号)$@(与$#相同,但是使用时加引号,并在引号中返回每个参数)$-(显示shell使用的当前选项,与set命令功能相同)$?(显示昀后命令的推出状态。0表示没有错误,其他任何值表明有错误。)Page22第二章变量和运算符ƒ运算符运算符是对计算机发出的指令。ƒ运算对象数字、字符(字面值)变量表达式ƒ表达式:运算符和运算对象的组合体Page23第二章变量和运算符ƒ运算符类型按位运算符:~,,,&,|,^$[]:告诉shell对方括号中的表达式求值。例子:#!/bin/bash#!/bin/bash#$[]#$[]演示演示echo$[2+3]echo$[2+3]Page24第二章变量和运算符ƒ运算符类型-按位运算符运算符说明~op1反运算符(0变1,1变0)op1op2右移运算符(右移除以2,左边补0)op1op2左移运算符(每左移一位则乘以2)op1&op2与比较运算符(都为1则为1,否则为0)op1|op2或比较运算符(有一个为1则为1,否则为0)op1^op2异或比较运算符(互补则为1,否则为0)Page25第二章变量和运算符ƒ运算符类型-赋值运算符=,+=,-=,*=,/=,%=,&=,^=,|=,=,=表达式letcount=$count+$changeletcount+=$changeƒ例子:varvar=100=100letletvarvar+=4+=4echo$echo$varvar输出结果104Page26第二章变量和运算符ƒ$[]可以接受不同基数的运算;格式$[base#n];base可以是2-64的任何基数;例子:echo$[2#11+1]echo$[2#11+1]结果?Page27第二章变量和运算符ƒ双引号-值替换变量-例子:echoecho““12$x12$x””ƒ单引号-直接引用变量-例子:echoecho‘‘12$x12$x’’ƒ反引号-执行命令-例子:echo`echo`echo$HOSTNAME`echo$HOSTNAME`ƒ反斜线-转意符:&*+^$`“|?Page28第二章变量和运算符ƒ作业char1=‘$LONG,howareyou!’char2=“$LONG,howareyou!”变量char1与char2的值相同吗?为什么?$[3^0]的结果?为什么?$[3|1]的结果?为什么?$[3&2]的结果?为什么?$[3||1]的结果?为什么?$[3&&2]的结果?为什么?$[10#8+1]的结果?为什么?Page29第三章shell输入与输出Page30第三章shell输入与输出ƒechoƒreadƒcatƒteeƒ管道ƒ文件重定向ƒ标准输入输出Page31第三章shell输入与输出ƒ输入-参数输入Commandargument1argument2…$0代表执行命令$1代表参数1$2代表参数2-标准输入Readargument1argument2类似于C中的scanfƒ输出Echo–e可以使用Linux终端屏幕控制例子:echoecho--nene\\033[31m033[31mhelloworld!helloworld!;echo;echo--ee\\033[0m033[0mPage32第三章shell输入与输出ƒecho-echo命令可以显示文本行或者变量,或者把字符串输入到文件。ƒecho[option]string--e解析转义字符--n回车不换行,linux系统默认回车换行-转义符(\c,\f,\t,\n)-\c回车不换行-\fclear屏幕-\t一个tab-\n换行(回车换行?)-例子:echod.shechod.shPage33第三章shell输入与输出ƒread语句可以从键盘或文件的某一行文本中读取信息,并将其赋给一个变量。ƒreadvarible1varible2…-如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直到遇到第一个文件结束符或者回车;如果给出了多个变量,他们按顺序分别被赋予不同的变量。Shell将用空格作为变量之间的分隔符。Page34第三章shell输入与输出ƒread举例#!/bin/bash#!/bin/bash##readnamereadnameechoecho--nFi

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功