为实现某个任务,将许多命令组合后,写入一个可执行的文本文件的方法,称为Shell脚本编程。

按照应用的Shell环境不同,可以将Shell脚本分为多种类型。其中最常见的是应用于Bash和Tcsh的脚本,通常将其称为Bash和Tcsh脚本。同Tcsh脚本相比,Bash脚本在Linux中的应用相对较广。

一、Shell脚本的基本内容

Shell脚本其实就是一个文本文件,因此建立新的脚本文件时,可以使用Vi、Emacs、Nano等文本编辑器。

提示:Shell脚本同Linux系统中的其他文件一样,可以不使用扩展名。但为了方便识别,通常建议Bash脚本文件名以sh结尾,Tcsh脚本文件以csh结尾。

例如:

[root@localhost shell]# cat hello.sh
#!/bin/bash
#This is a test script.
#This script will output Hello.
#2013/12/15 echo "Hello!"

1、调用Shell

本例中第1行内容是:

#!/bin/bash

这一行的内容用于告诉系统应该使用何种Shell来执行这个脚本,或者可以说是使用哪种Shell来解释执行这个脚本中的内容。

注意:调用Bash语句也可以写为#!/bin/bsh,并且调用Shell的语句只能出现在脚本文件的第1行。

2、脚本注释

#This is a test script.
#This script will output Hello.
#2013/12/15

除第1行以外,脚本中所有以“#”开头的行都是注释。注释的主要作用是为了方便阅读和维护脚本,实际执行时系统会忽略注释。

【注释的内容】

功能。

创建时间和修改时间。

重要语句块、复杂结构的作用。

原创作者、修改作者。

3、脚本内容

echo "Hello!"

脚本内容是实现脚本的一组命令的集合,由一个或多个命令组成。在较为复杂的脚本中,又将脚本内容划分为定义部分和主题部分。

定义部分主要用于定义脚本捕获的系统信号、使用的变量、函数和文件等。

主体部分主要用于调用定义部分中的变量、函数,以实现脚本的功能。

【写脚本内容时的注意事项】

为了便于阅读,每一行只书写一个命令。

如果在一行写多个命令,需要用分号“;“分隔,但通常不推荐。

在设计脚本内容时,应该将多个实现某一特定功能的命令写成一个功能模块或函数。

对于一些特殊的语句(例如流控制语句等),应该使用特殊的缩进格式以便于阅读。

一个合格的脚本文件,应该同时使用Shell调用、脚本注释、及脚本内容语句。为了使脚本可读性更高、通常应该在Shell调用、脚本注释、脚本内容语句、功能模块和函数之间使用空行分隔。

二、脚本的运行方式

1、使用bash命令执行脚本

[root@localhost shell]# bash hello.sh
Hello!

2、使用点号“.”执行脚本

这种执行脚本的方式通常用于调用系统脚本文件。

[root@localhost shell]# . hello.sh
Hello!

注意:使用bash命令和点号执行脚本时,可以省略脚本文件中的Shell调用语句。但如果脚本不是系统脚本文件时,通常不建议这样做。

3、设置脚本为可执行

[root@localhost shell]# chmod u+x hello.sh
[root@localhost shell]# ./hello.sh
Hello!

三、接收用户输入

[root@localhost shell]# cat accept_input.sh
#!/bin/bash #This is a sample script file.
#Accept user input for demonstartion.
#2013/12/15 echo -n "Input your name:"
read NAME
echo "Hello,$NAME."

四、向脚本传递参数

为了捕获向脚本传递的参数,可以使用系统定义的位置变量。位置变量是一类比较特殊的变量,引用脚本参数时,可以使用$1到$9这9个变量。

[root@localhost shell]# ./get_para.sh one two three four
The first parameter:one
The second parameter:two
The third parameter:three
The fourth parameter:four
......

Bash脚本编程基础的更多相关文章

  1. linux学习19 shell脚本基础-bash脚本编程基础及配置文件

    一.shell脚本编程 1.编程语言的分类,根据运行方式 a.编译运行:源代码 --> 编译器(编译) --> 程序文件 C语言: b.解释运行:源代码 --> 运行时启动解释器,由 ...

  2. Linux shell脚本编程基础之练习篇

    shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...

  3. Bash脚本编程之数组

    数组简介 在bash脚本编程当中,变量是存储单个元素的内存空间:而数组是存储多个元素的一段连续的内存空间. 数组由数组名和下标构成,如下. ARRAY_NAME[SUBSCRIPT] 数组按照下标的类 ...

  4. SHELL脚本编程基础知识

    SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...

  5. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  6. Bash脚本编程学习笔记08:函数

    官方资料:Shell Functions (Bash Reference Manual) 简介 正如我们在<Bash脚本编程学习笔记06:条件结构体>中最后所说的,我们应该把一些可能反复执 ...

  7. Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

    我自己接触Linux主要是大学学习的Turbolinux --> 根据<鸟哥的Linux私房菜:基础篇>(第三版) --> 马哥的就业班课程.给我的感觉是这些课程对于bash的 ...

  8. Bash 脚本编程

    概述 Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell. shell语法 变量 定义:your_name="hellohhy" 使 ...

  9. 脚本命令高级Bash脚本编程指南(31):数学计算命令

    题记:写这篇博客要主是加深自己对脚本命令的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 高等Bash脚本编程指南(31):数学盘算命令 成于坚持,败于止步 操作数字 factor ...

随机推荐

  1. Redhat=》中文

    我的redhat安装时没有提示语言选项,由于工程需要,支持汉字是不可避免的,因此就必须安装中文输入法. 安装中文包 将系统光盘镜像文件连接至计算机,我的镜像是RHEL5.1的,先将光盘挂载至/mnt目 ...

  2. BOX2D测试

    ; ; Box2DTestLayer = cc.Layer.extend({ world:null, //GLESDebugDraw *m_debugDraw; ctor:function () { ...

  3. Linux下Python获取IP地址

    <lnmp一键安装包>中需要获取ip地址,有2种情况:如果服务器只有私网地址没有公网地址,这个时候获取的IP(即私网地址)不能用来判断服务器的位置,于是取其网关地址用来判断服务器在国内还是 ...

  4. delphi 集合

    DELPHI没有JAVA的丰富的集合(SET MAP LIST),只有Tlist,可包装各种类型

  5. 泡泡堂、QQ堂游戏通信架构分析

    http://blog.csdn.net/sodme/article/details/468327#comments ————————————————————————————————————————— ...

  6. 前端异步解决方案——mmDeferred

    Deferred是前端解决异步操作的一种编程范式,后来出现的Promise规范更是让其普适性大大提高.不过Promise规范也存在分岐.现在最流行的是Promise/A规范. Promise/A大致是 ...

  7. HDU 5862 Counting Intersections (树状数组)

    Counting Intersections 题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5862 Description Given ...

  8. sql的union用法

    sql中union是很常见的,尤其是创建视图时,完全离不开union. SQL UNION 操作符合并两个或多个 SELECT 语句的结果,UNION 内部的每个 SELECT 语句必须拥有相同数量的 ...

  9. POJ2155Matrix(二维线段树)

    链接http://poj.org/problem?id=2155 题目操作就是说,每次操作可以是编辑某个矩形区域,这个区域的0改为1,1改为0,每次查询只查询某一个点的值是0还是1. 方法:二维线段树 ...

  10. mssql 用户只能查看授权的数据库

    问题背景:公司的一台数据库服务器上放在多个数据库,每个数据库都使用不同的登录名称,但在将项目文件发布到Ftp时,有些Ftp的信息是在客户那边的 一旦客户那边使用配置文件中的数据库信息连接到数据库他就能 ...