运维技术分享之shell篇_第1页
运维技术分享之shell篇_第2页
运维技术分享之shell篇_第3页
运维技术分享之shell篇_第4页
运维技术分享之shell篇_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、运维技术分享之SHELL篇2016/08/12SHELL种类 (1)/bin/shB-shell由R.Bourne在Bell实验室开发,Unix的标准Shell(2)/bin/cshC-shell由Bill Joy在加州大学开发,提供历史机制和别名替换(3)/bin/bashBourne Again ShellLinux标准Shell,其兼容B-Shell。Shell的选择:Shell一般由管理员在创建用户时,为用户指定;其保存在/etc/passwd文件中;或通过usermod命令进行更改。也可在登录后执行相应的命令切换Shell。BASH的启动与终止启动:启动:BashBash启动时,先运

2、行启动时,先运行/etc/profile/etc/profile、/etc/bashrc/etc/bashrc,再自动运行用户主目录下,再自动运行用户主目录下的的.bash_profile.bash_profile和和.bashrc.bashrc文件。文件。终止:当用户执行终止:当用户执行exitexit、logoutlogout或按下或按下ctrlctrld d 时,时,BashBash将运行用户主目录下的将运行用户主目录下的.bash_logout.bash_logout文件中文件中的命令。的命令。输入/输出命令echo-显示命令echo option string将string的内容按照

3、option指定的方法送到屏幕上进行显示-n输出后不换行-e对字符串中的特殊字符进行翻译特殊字符a响铃n换行t跳格位置参数位置参数及引用位置参数也称为命令行参数,即:组成命令行的所有元素。在Shell脚本中通过$0、$1.进行引用位置参数。为位置参数赋值set 参数值列表位置参数移动shift n 将位置参数(除$0)右移n个位置,默认为1。SHELL预定义特殊变量变量名变量名含义含义$?最后一次执行命令的返回码$当前脚本自己的PID$!脚本进程最近启动的后台进程的PID$#命令行参数的个数$0脚本文件本身的名字$1,$2第一、第二个命令行参数“$*”将所有命令行参数作为一个整体单词看待“$”

4、将命令行参数作为多个单词看待IF结构if条件/命令then commandlistelif 条件/命令then commandlistelsecommandlistfi#!/bin/bash#!/bin/bashecho -n enter filename:echo -n enter filename:read fnameread fnameecho enter words:echo enter words:read wordsread wordsecho $words 2/dev/null $fnameecho $words 2/dev/null $fnameif $? eq 0 if $?

5、 eq 0 then thenecho Write successfullyecho Write successfullyelseelseecho write errorecho write errorfi fiCASE结构case word incase word inpattern1pattern1)command_list;command_list;pattern2pattern2) command_list;command_list; * *) command_list; command_list; esacesac其中:其中:patternpattern可以用竖线分隔多个模式,模式使

6、用可以用竖线分隔多个模式,模式使用shellshell的文件名匹配规的文件名匹配规则。则。WHILE循环while conditionwhile conditiondodocommand_listcommand_listdonedone#!/bin/shcount=3while $count -gt 0 doecho -en Login name:read lognameecho -en Password:read pwd $logname = root -a $pwd = 12345 & echo Welcome Here!count=0let count=count - 1 sle

7、ep 5 doneUNTIL循环until conditiondoCommandListdoneFOR循环格式格式1 1:for var in word_listfor var in word_listdodocommand_listcommand_listdonedonefor var in $1 $2 for var in $1 $2 dodocommand_listcommand_list donedone从从shellshell的位置变量中取值的位置变量中取值例#!/bin/bashecho -e please enter vars like var1 var2 .necho They

8、 are:read varfor i in $vardo echo $idoneFOR循环格式2:for var in Path/*docommand Listdone遍历Path目录中的所有文件及文件夹FOR循环格式3:for (e1;e2;e3)do 命令列表done语法同C中的ForBREAK、CONTINUE、EXITBreak n 退出 n 层循环continue n 跳到第n层循环继续exit n 退出脚本,并设置退出码SELECTselect一般用于设计菜单。select显示一组菜单项、显示一个输入提示并读入用户输入的菜单编号。select var in wordsdo语句don

9、eselect的提示符由“PS3”决定。select 一般和case配合使用函数格式:function_name() command_list return n其中return用于带回函数的返回码(0255)注意:函数必须先定义后使用函数在当前环境下运行,和调用它的脚本共享变量;而且可以通过把变量作为定位参数来赋值的方式传递变量。SHELL 内置命令eval命令分析eval 命令字符串功能:首先对“命令字符串”进行shell替换,然后执行该命令。例:for(i=1;i=$#;i+)doeval echo $i. $idone内置命令 DECLARE内置命令 declare 可用来创建变量。de

10、clare 选项 variable=valueSHIFT命令一般用于函数或者脚本程序参数处理,特别是参数多于10以上的时候将所有参数变量向下移动一个位置,$2变成$1,$3变成$2,依次递进,但$0保持不变例如:while “$1 != ” ;do echo $1 shiftdoneTRAP命令command一般情况下是Linux命令 表示发生陷阱时为空指令,不做任何动作-表示发生陷阱时采用缺省指令常见信号SHELL内置命令总结内置命令内置命令命令说明命令说明echo输出一行文本到标准输出设备read从标准输入设备读入数据printf格式化输出declare定义或创建变量或数组let让未定义的

11、变量参与算术运算expr执行表达式shift把所有参数变量向下移动一个位置eval执行命令trap用来定义接收OS信号后而采取的动作exit退出SHELL程序sleep休眠test条件测试网络编程/dev/tcp & /dev/udp:这两个神奇的目录为bash编程提供了一种可以进行网络编程的功能。在bash程序中使用/dev/tcp/ip/port的方式就可以创建一个scoket作为客户端去连接服务端的ip:port。我们用一个检查http协议的80端口是否打开的例子来说明它的使用curl和wget命令#!/bin/bashipaddr=port=80if ! exec 5 /dev/tcp/$ipaddr/$portthenexit 1fiecho -e GET / HTTP/1.0n &5cat &5脚本调试sh x 脚本名该

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论