01.学习shell编程需要的知识储备

1.vi、vim编辑器的命令,vimrc设置

2.命令基础,100多个命令

3.基础、高端的网络服务,nfs,rsync,inotify,lanmp,sersync,sshkey批量分发管理

02.shell脚本概念

1.什么是shell

shell是一个命令解释器,在操作系统的最外层,负责直接与用户对话,将用户的输入解释给操作系统,并输出操作系统各种各样的处理结果,输出到屏幕返回给用户。这种对话方式可与是交互式的(键盘输入命令,可以立即得到shell的回应),或者是非交互(脚本)的方式

2.什么是shell脚本

当命令或语句不在命令行中执行,而是通过一个程序文件执行时,该程序就被称为shell程序或shell脚本,shell程序类似Dos下的批处理程序(*.bat)

用户可以在shell脚本中输入一系列的命令或语句。这些命令、变量流程控制语句等有机结合在一起就形成功能强大的shell程序

3.示例

#!/bin/bash
echo "Hello World !"

03.shell程序在运维工作中的地位

shell擅长处理纯文本类型数据,linux中几乎所有配置文件、日志文件(nfs、rsync、httpd、nginx、lvs等)都是纯文本文件。shell脚本在linux中作用巨大

04.shell脚本语言的种类和说明

1.在unix/linux中主要有两大类

Bourne shell (包括sh、ksh、bash):Bourne shell (sh),Kor n shell (ksh),Bourne  Again shell (bash),POSIX shell (sh)

C shell (包括csh、tcsh):C shell,TENEX/TOPS C shell

2.shell脚本语言是弱类型语言,定义变量的时候不需要指定类型,处理的时候如果定义的不对,就会报错。比如让字符串和整型数想加

3.较为通用的shell有标准的Bourne shell(sh)和C shell,其中Bourne shell已被Bourne Again shell(bash)取代

4.shell的优势在于处理操作系统底层的业务(大量命令为它支撑,2000多个命令都是shell支撑)

05.常用操作系统的默认shell

Linux 是 Bourne Again shell (bash)

UNIX:Solaris、FreeBSD 缺省的是Bourne shell (sh),AIX 是Korn shell (ksh) ,HP-UX 是POSIX shell(sh)

查看命令:echo $SHELL(系统变量都是全大写)

06.shell脚本的建立和执行

1.shell脚本(bash shell程序)通常是在编辑器(如vi/vim)中编写,由Unix/linux命令、bash shell命令、程序结构控制语句和注释等内容组成

2.脚本开头第一行

3.shell脚本的执行方式:

1)作为可执行程序

代码保存为test.sh,并cd到相应目录:

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh #执行脚本

注意,一定要写成./test.sh,而不是test.sh,运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。

2)作为解释器参数

这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:

/bin/sh test.sh

这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

最新文章

  1. sql查询指定表外键约束
  2. DIV页面布局,开局代码
  3. Oracle 中union的用法
  4. linux设备分类
  5. 利用程序将.jrxml导出为.jasper文件并用PDF显示(2)
  6. 最长增长子序列 DP
  7. 3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵
  8. Ubuntu 12.4 server 安装 redmine
  9. 关于cgi、FastCGI、php-fpm、php-cgi
  10. 【LeetCode】152. Maximum Product Subarray
  11. fio2.1.10--README
  12. docker学习-----docker可视化portainer
  13. 开启BBR
  14. Rhino学习教程——1.3
  15. Mongodb Mysql NoSQL的区别和联系
  16. Java课程寒假之开发记账本软件(网页版)之一
  17. WebAPI路由、参数绑定
  18. (后台)详细了解java中的null(转)
  19. Linux mmc framework2:基本组件之mmc
  20. python学习之老男孩python全栈第九期_day005作业

热门文章

  1. JavaScript中的数组创建
  2. mac 下安装 mariadb
  3. Resolving Strong Reference Cycles for Closures
  4. ack 工具
  5. gazebo 7.0 升级到7.15 参考他人博客
  6. Teradata在大数据管理与分析领域连续18年评测排名第一
  7. BZOJ 1602: [Usaco2008 Oct]牧场行走 倍增裸题
  8. element table 组件内容换行方案
  9. Linux下挂载分区 (本人实例)
  10. Mysql5.7安装过程----win10