shell脚本基础

一、什么是shell

shell既是一个可执行程序,又是一种程序设计语言。作为执行程序,它交互式地解释和执行用户输入的命令,是用户和Unix/Linux沟通的桥梁;作为程序设计语言,它可以定义变量和参数,在一定程度具备编程的能力。虽然不属于系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序。

二、shell类型

三、shell脚本在编程程序语言中的分类

bash中的弱类型相对于强类型变量带来三个改变
      1、变量无需声明
      2、声明和赋值可同时进行
      3、变量需要引用$

对于字符串赋值而言,因为bash中变量无需声明,所以直接赋值即可,c则需要声明。bash胜
        对于数值计算而言,都需要赋值,只不过bash可以赋值声明和赋值可同时进行。胜bash一点点。

int a  intb int c    c=a+b  print c

declare -i c

declare -i a

declare -i b

c=a+b  echo $c  或者  c=$[a+b]

只不过通常写为c=$[$a+$b]  以便识别其他字符串变量引用。变量引用这或许是弱类型语言的又一弱点。

但bash对数值的计算程度的支持远不及c

[email protected] /tmp]#a=1
[[email protected] /tmp]#b=2
[[email protected] /tmp]#c=$a+$b
[[email protected] /tmp]#echo $c
1+2
[[email protected] /tmp]#declare -i a=1
[[email protected] /tmp]#declare -i b=2
[[email protected] /tmp]#c=$a+$b
[[email protected] /tmp]#echo $c
1+2
[[email protected] /tmp]#declare -i c
[[email protected] /tmp]#c=$a+$b
[[email protected] /tmp]#echo $c
3                 ----------------------c不转换数值型,无法识别1+2

面向过程 面向对象

面向过程式编程语言

过程式:以指令为中心来组织代码,数据服务于代码

编译型语言  解释性语言

解释执行,并不像java、c那样生成.class文件再进行编译

四、shell脚本的特点及应用   

特点:虽然shell编程不像Java那样强大,但是它们能够轻易的处理文件目录之类的对象,例如:打印一个字符串只需要一个echo即可,而不需要像java那样需要定义类和对象之类的框架结构。这也正弥补了解释型语言在速度上的缺陷。

shell脚本的用途有:

自动化常用命令

执行系统管理和故障排除

创建简单的应用程序

处理文本或文件

五、shell脚本的语法格式和执行条件

语法格式

第一行必须声明默解释环境(Shabang机制):#!/bin/bash,那么它执行时会默认用当前Shell去解释这个脚本(即:$SHELL环境变量)

执行方式:

作为可执行程序运行(给予执行权限,在命令行上指定脚本的执行路径)

注:任何一个可执行程序,如果要执行,必须在PATH环境变量中,以保证根可以找到程序,否则无法执行

作为指定特定解释器的参数运行

六、shell脚本中的语法基础

变量

这里当然不是说字符串、整型什么的,其实 bash 中的变量都可以理解为字符串。bash 中有四种类型的变量,它们是环境变量、本地变量、位置变量和特殊变量。

本地变量

环境变量  PATH  PWD   HOSTNAME  HISTORY

定义方法:export VALUE

declare -x  VALUE

局部变量

位置变量  $1,$2

特殊变量  $#  $*  [email protected]   $?  $0

运算

算术运算

let a=$b+$c

let a+=1

a=$[$a+$b]

逻辑运算

&&  ||  !

注意:如果多条命令出现在逻辑关系中,建议加小括号

条件测试

字符串测试

~=  :一般使用[[ ]]匹配模式

==

>

<

!=  :以上比较的都是字符串对应的ASCII码的大小

-z : 字符串是否为空,空为真

-n :

数值测试

-eq

-ne

-gt

-ge

-lt

-le

文件测试

-e:文件是否存在

-f:是否存在且为普通文件

-s:文件是否为空

注意,测试要加[ ]

组合测试

-a  -o  -!

[ ! -r /tmp/file1 -a ! -w /tmp/file1 ]

        注意:对于字符串测试和数值测试同样适用于此种格式

          1、如果要使用globbing或者正则表达式要使用[[ ]],一般使用在字符串的~=中。

          2、找不到错误时可以更换[]或者[[]]

注意 :组合测试中的-a ,-o,!一般用在测试条件间的逻辑,而逻辑运算中的&&,|| 一般用在命令执行结果中的判断

命令引用

$()   ``

变量替换

$VALUE

[[email protected] ~]#a=1
[[email protected] ~]#b=2
[[email protected] ~]#ab=3
[[email protected] ~]#echo $ab
3
[[email protected] ~]#echo ${a}b
1b
[[email protected] ~]#
时间: 2024-10-15 05:03:43

shell脚本基础的相关文章

关于shell脚本基础编程第四篇

shell脚本基础编程第四篇本章主要内容:函数 函数 function:             function 名称 { 命令 ; } 或 name () { 命令 ; }           定义 shell 函数.               创建一个以 NAME 为名的 shell 函数.当作为一个简单的命令启用时,           NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令.当 NAME           被启用时,参数作为 $1...$n 被传递

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

shell脚本基础学习(转)

看到别人的学习总结,觉得不错转了过来(转自TryFly) 一.shell脚本基础 ? ?shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正则表达式,管道命令以及重定向向等功能,以达到我们所想要的处理目的.它的基本用途有: 1.自动化常用命令 2.执行系统管理和故障排除 3.创建简单的应用程序 4.处理文本或文件 ... 二.创建shell脚本 第一步.使用文本编辑器来创建文本文件 第一行必须包括shell 声明序列:#!

shell脚本基础进阶(四)----作业

20150913-15作业 1.描述shell程序的运行原理(可附带必要的图形说明) shell脚本基础进阶(一)----shell介绍 2.总结shell编程中所涉及到的所有知识点(如:变量.语法.命令状态等等等,要带图的哟) shell脚本基础进阶(二)----变量及运算符 3.总结课程所讲的所有循环语句.条件判断的使用方法及其相关示例:(if (jpg|png is not exist):echo "You say a XX") shell脚本基础进阶(三)----流程控制语句

Linux运维之道之ENGINEER1.4(shell脚本基础)

ENGINEER1.4 SHELL脚本基础 认识shell环境 bash shell的使用方式 交互式: --人工干预,智能化程度高 --逐条解释执行,效率低 非交互式: --需要提前设计,智能化难度大: --批量执行,效率高: --方便在后台及悄悄地执行: 什么是shell脚本:提前设计可执行语句,用来完成特定任务的文件 --解释型程序 --顺序,批量执行 规范shell脚本的一般组成: #!环境声明 #注释文本 可执行代码 ----------------------------------

续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,

一. Vim续写 ?1.命令扩展模式的位置定界 ??起始位置 cmd 终止位置???Cmd:????y复制????d删除????Gu变大写????gu变小写??例如:0y$命令意味着:????0 先到行头????Y 从这里开始拷贝????$ 拷贝到本行行尾最后一个字符????Ye 从当前位置拷贝到本单词的最后一个字符 ?2.扩展命令模式:地址定界 ? ?# 具体第#行,? ?#1,#2 从开头数第#1行到第#2行? ?#1,+#2 从开头数的第#1行到从第#1行开始数的第#2行? ? ?例:2,

Shell脚本基础(一)

前言:随着Linux系统在企业中的应用越来越多,服务器的自动化管理也越来越变得重要,在一些复杂的Linux维护工作中,大量的重复性的输出和交互式操作不但费时费力,而且容易出错,所以Shell脚本,可以批量处理,自动化完成一系列维护工作,大大减轻管理员的负担. 一,Shell脚本基础知识1,编写第一个shell脚本1),vim first.sh[[email protected] ~]# mkdir /shell //创建一个shell目录[[email protected] ~]# vim fi

linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)

Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要使用"_"下划线开头 最好做到见名知意 不能使用程序中的保留字,列如if,for等 1.3变量类型 字符型 数值型 整型浮点型 布尔型 条件是和否 #$echo $a 引用 abc 撤销 unset +(变量名)a 1.4变量操作 * 设置变量 * 引用变量 * 撤销变量 单引号和双

shell脚本基础、变量

shell脚本基础 知识要点 掌握Shell脚本的基础知识 学会使用Shell变量 学会编写简单的Shell脚本 Shell脚本的应用环境 学习shell脚本的基本流程 看.想.写 shell脚本用在什么地方 编写常用系统维护工具菜单 重要的性能参数.进程和日志分析 自动实现数据备份计划 自动批量搭建特定系统环境 防火墙自动配置脚本 服务器的配置文件安全比对 对批量设备进行远程巡检 Shell脚本的组成元素 shell脚本的基本组成 声明和注释* 系统命令 文本处理工具(grep.cut.sed