Shell脚本了解

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781

目录(?)[+]

一、什么是Shell

Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。 
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 
Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。

二、Shell 脚本

Shell 脚本(shell script),是一种为shell编写的脚本程序。 
业界所说的shell通常都是指shell脚本,但读者朋友要知道,shell和shell script是两个不同的概念。 
由于习惯的原因,简洁起见,本文出现的”shell编程”都是指shell脚本编程,不是指开发shell自身。

三、Shell 环境

Shell 编程跟Java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 
Linux的Shell种类众多,常见的有:

Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
……

本教程关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell。 
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为#!/bin/bash。

#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。

四、第一个shell脚本

打开文本编辑器(可以使用vi/vim命令来创建文件),新建一个文件test.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。 
输入一些代码,第一行一般是这样:

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

“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。 
echo命令用于向窗口输出文本。

运行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
/bin/php test.php

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

还有关于更多Shell脚本学习内容:

Shell 变量
Shell 传递参数
Shell 数组
Shell 运算符
Shell echo命令
Shell printf命令
Shell test命令
Shell 流程控制
Shell 函数
Shell 输入/输出重定向
Shell 文件包含

可参考如下教程:http://www.runoob.com/linux/linux-shell.html 
里面还有个Shell 在线工具,可以实际操作尝试哦

时间: 2024-09-14 05:57:22

Shell脚本了解的相关文章

怎么通过java去调用并执行shell脚本以及问题总结

该文章来自阿里巴巴技术协会(ATA)精选集 背景 我们在开发过程中,大部分是java开发, 而在文本处理过程中,主要就是脚本进行开发. java开发的特点就是我们可以很早地进行TDDL, METAQ 等等地对接: 而脚本开发的特点就是在进行批处理的时候非常方便. 前阵子我遇到这么一个需求场景: 对抓取的数据进行打包, 后来又遇到我要通过脚本进行抓取,比如nodejs下基于phantomjs的casperjs爬虫. 解决方法 对于第一个问题:java抓取,并且把结果打包.  那么比较直接的做法就是

怎么用shell脚本遍历数据库某个表,一个字段下的所有内容

问题描述 怎么用shell脚本遍历数据库某个表,一个字段下的所有内容 数据库为mysql 就是遍历一列上所有的内容,然后判断是否等于某个值,取出这个字段对应的其他字段的值. 解决方案 听你的意思应该就是: select * from 表名 where 列名=某个值; 解决方案二: 直接用sql语句来遍历判断条件查询数据好了

shell 自动重启nginx php shell脚本

shell 自动重启nginx php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

生产环境Shell脚本Ping监控主机是否存活(多种方法)

在网上针对shell脚本ping监控主机是否存活的文档很多,但大多都是ping一次就决定了状态,误报率会很高,为了精确判断,ping三次不通再发告警,只要一次ping通则正常.于是,今天中午抽出点时间总结了下面脚本. 脚本功能:通过Ping命令监控主机是否存活,如果ping失败则继续ping,三次不通就认为主机宕机或网络有问题,这时就可以发送邮件告警了. 方法1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #!/bin/bash

将PHP作为Shell脚本语言使用

脚本 本文出自:http://phpuser.com 作者: y10k翻译 (2002-10-15 06:02:00) --英文原著:Darrell Brogdon,发表于 http://www.phpbuilder.com/columns/darrell20000319.php3) 可能很多人都想过使用PHP编写一些定时发信之类的程序,但是却没有办法定时执行PHP:一次去PHPBuilder的时候,发现了这一篇文章,于是想给大家翻译一下(同时做了一些修改),希望对大家有用.第一次翻译文章,不好

PHP教程之PHP中shell脚本的使用方法

我们都知道,在计算机科学中,SHELL类似于DOS下的command.com.它接收用户命令,然后调用相应的应用程序.同时它又是一种程序设计语言.作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支. PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论.大多数情况下,我使用 exec() 命令和数据数组处理所有东西.或者对

一键启动集群的shell脚本

一键启动集群的shell脚本,包括HDFS HA + YARN相关所有程序,FBI00X是主机名,供大家参考: #!/bin/bash echo "-------------------------Step1----------------------------" echo "Now,starting Zookeeper." ssh FBI001 $ZOOKEEPER_HOME/bin/zkServer.sh start ssh FBI002 $ZOOKEEPER

用于监控网站是否异常的shell脚本

shell 监控网站是否异常的脚本,如有异常自动发电邮通知管理员. 流程: 1.检查网站返回的http_code是否等于200,如不是200视为异常. 2.检查网站的访问时间,超过MAXLOADTIME(10秒)视为异常. 3.发送通知电邮后,在/tmp/monitor_load.remark记录发送时间,在一小时内不重复发送,如一小时后则清空/tmp/monitor_load.remark. #!/bin/bash SITES=("http://web01.example.com"

提前认识软件开发(22) shell脚本中的文件操作

编写shell脚本时,经常会涉及到对文件的操作,比如从文件中读取一行数据.向文件追加一行数据等.完成文件读写操作的方法有很多,了解各种命令下文件操作的执行情况,有助于开发人员在不同使用场景下选择合适的命令. 本文以实际的shell脚本为例,介绍了对文件进行操作的不同方法,为相关开发工作提供了参考. 一.概述 在某些软件项目的需求文档中,要求程序一次性读或写的数据规模较大,可达1000万行级,这就涉及到对程序执行方法和效率等的考虑. 本文比较了不同shell命令在对文件进行读或写操作过程中执行效率

操作Mysql的Shell脚本

[目录] 1.MySQL的热备份脚本 2.用FTP同步服务器 3.Keepalived的监控切换脚本 4.SVN的版本库的批量备份 5.自动监控ADSL并重拔号 6.Linux批量生成生成帐户(10月11日更新) 7.测试局域网内主机是否alive(10月11日更新) 一.MySQL的热备份脚本 这是MySQL的备份方式之一,脚本如下: #!/bin/bash PATH=/usr/local/sbin:/usr/bin:/bin # The Directory of Backup BACKDIR