第 三 十 一 天:shell 脚 本 (一)

小Q:一个人事业上的成功,仅%15是由于他的专业技术,另外的%85要依赖他的人际

关系.外世技巧;软与硬是相对而言的,专业技术是硬本领,而基于处理人际关

系的交际本领则是软本领                ---卡耐基

一:简介
二:shell脚本格式
三:shell执行方式
四:shell查看方式
五:shell变量及例题

一:简介


脚本:(Script languages)是为了缩短传统的编写-编译-链接-运行过程而创建的计算机

编程语言;是比HTML超文本标记语言高级,比c·java编程语言低级的脚本语言;

一般以文本形式存在,类似于一种命令,不需要编译;


特征: 程序代码即是脚本程序,亦是最终可执行文件。

分类: 独立型:在其执行时完全依赖于解释器;

嵌入型:通常在编程语言中(如C,C++,VB,Java等)被嵌入使用。

举例:

如果建立了一个程序,可以打开.aa为扩展名的文件,当别人编写了.aa文件后,脚本就可以自动对其操作。

分类:

1.工作控制语言和shell

2.GUI脚本:一种专业的控制计算机的语言;在用户和图形界面等之间互动。

3.WEB编程脚本:应用程序定制的脚本语言,用于提供WEB页面的自定义功能。

4.应用程序定制的脚本语言:许多大型的应用程序都根据用户需求定制惯用的脚本语言。

5.文本处理语言:处理基于文本的记录是脚本语言最早的用处之一。awk perl

6.通用动态语言:一些语言,比如Perl,从一门脚本语言发展成了更通用的编程语言。

7.扩展/可嵌入语言:少数的语言被设计通过嵌入应用程序来取代应用程序定制的脚本语言。

常用脚本语言:

1.C shell:Bill Joy于20世纪80年代早期,在Berkeley的加利福尼亚大学开发了C shell。

2.JavaScript:直译式网络脚本语言,已经被广泛用于Web应用开发,它的解释器被称为

JavaScript引擎,为浏览器的一部分

3.Python: 是一种面向对象、解释型计算机程序设计语言,Guido van Rossum于1989年

发明,被昵称为胶水语言,方便连接c·c++等程序结合

4.PHP:是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使

用广泛,主要适用于Web开发领域

5.Perl:一种功能丰富的计算机程序语言,运行在超过100种计算机平台上;设计者为拉里

·沃尔(Larry Wall),于1987年12月18日发表

6.Nuva:是一种面向对象的动态脚本语言,用于代码生成领域外,Nuva语言也能用于开发

应用程序

7.Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言

shell

Shell:俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(即命令解析器)

它类似于DOS下的command和后来的cmd.exe。

两大类

图形界面shell:(即GUI shell),应用于微软的windows系列操作系统和linux shell包

括X window manager以及功能更强大的CDE、GNOME、KDE、 XFCE;

命令行式shell:(即CLI shell)例如bash/sh/ksh/csh(Unix/linux 系统)以及MS-DOS

系统;

命令行式shell

1.bash:GNU Bourne-Again Shell,一般为Linux中的默认shell;

2.csh: c shell,调用c解释器;

3.ksh: korn shell,AIX命令;

4.sh:  shell,调用缺省的shell。

特点

如今所有的工作都转向于自动化,运维也是如此;而自动化运维,编写脚本是必不可少的,现在Linux大多默认采用的是bash,他在编程方面相对于另几个相当优秀,并且兼容bsh,我们主要也是学bash。

===========================================================================================

二:shell脚本结构

作为一个合格的工作人员,首先要把自己的脚本归档分类,即放在一个特定的目录下,然后分类自己的脚本类别,名字通俗易懂,并以.sh为后缀;

格式:

#!/bin/bash

##脚本创建人

##脚本创建日期

##附加的一些备注

##脚本所实现的功能

正 文 ·····

问题:

1.在文件里面输入一系列命令,可以直接执行吗?

可以;我觉得这时调用的是当前用户默认使用的shell。如果其中一个命令有错后面的命令

还是会继续执行下去的

2.加#/bin/bash目的是什么,既然不加也可以?

这行不是注释符,而是说脚本将在什么shell下运行,并且以该shell环境执行脚本。

举例简单理解:在AIX,即ksh的环境下编写脚本

#!/bin/ksh

##备注说明

export LOG=/tmp/test.log

exec  >> $LOG 2>&1

echo "a test message!"

exit 0

执行脚本后,在/tmp下面会有一个test.log文件生成,文件内容为"a test message!"

如果把#!/bin/ksh   变为   #!/bin/bash   或变为  #!/bin/bash

执行脚本,会有如下报错:

export不是shell命令,即在csh里面没有export这个命令。

===========================================================================================

三:shell执行方式

1.切换到脚本所在的目录(即工作目录)执行shell脚本:

cd  /data/shell   >>>    ./hello.sh

2.以绝对路径的方式去执行bash shell脚本

/data/shell/hello.sh   >>>   回车

3.直接使用bash 或sh 来执行                       加 -x 选项可以看到过程

cd /data/shell   >>>  bash  hello.sh /sh hello.sh

此法可不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash

路径),因为他是指明的被bash调用的;

4.在当前的shell环境中执行

cd /data/shell  >>>  . hello.sh

前三种方法都是在当前shell(称为父shell)开启一个子shell环境执行脚本,执行完后

子shell关闭,又回到父shell;

法四就是在这个子shell环境中执行脚本,完后还是原地不动。

参考:http://www.jquerycn.cn/a_8354

===========================================================================================

四:shell查看

echo $SHELL/$o        查看默认的shell

cat  /etc/shells      查看可以使用的shell

export                导出为用户环境变量的环境变量

set                   显示shell的所有设置的环境变量

env                   列出当前用户的环境变量

===========================================================================================

五:shell变量及例题

Shell定义变量需要遵循的规则

1.使用变量无需事先声明

2.首个字符必须为字母(a-z,A-Z)

3.中间不能有空格,可以使用下划线(_)

4.不能使用标点符号

5.不能使用bash里的关键字

除了可以以上显示式的赋值,也可以用语句赋值,如 for file in ‘ls /etc’

注意:要取用一个变量的值,需在变量名前面加一个$ ; 给变量赋值的时候,不能在"="

两边留空格

举例:

1.a=1    >>>   $a   >>>  显示1 ;

2.#!/bin/bash

read  -t 5 -p "please input a number:" n   用户交互命令,-t超时限制  -p打印

echo  $n                                   打印n         -t要在-p前面

执行后,显示please input a number:    >>     输入字符回车会被打印出来,

五秒不输入退出交互形式

3.#!/bin/bash             #!/bin/bash

a=1;b=2                 a=1;b=2

c=$a+$b                 c=$【$a+$b】

echo $c                 echo $c

执行后显示1+2             执行后显示3

这是数学表达式的一种格式,多练练就记住了;

时间: 2024-10-04 02:07:04

第 三 十 一 天:shell 脚 本 (一)的相关文章

centos shell编程4【分发系统】 第三十八节课

centos shell编程4[分发系统]  第三十八节课 http://www.cnblogs.com/MYSQLZOUQI/p/4811790.htmlmkpasswd 生成密码的工具,安装 expect包 yum install -y expect 上半节课 下半节课 f

centos shell编程5LANMP一键安装脚本 第三十九节课

centos shell编程5LANMP一键安装脚本  第三十九节课 上半节课 下半节课 f

centos DNS服务搭建 第三十节课

centos  DNS服务搭建     第三十节课 上半节课 下半节课 一. DNS原理相关DNS 为Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种服务机制.其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析. DNS使用TCP和UDP, 端口号都是53, 但它主要使用UDP,服务器之间备份使用TCP.全世界只有13台“根”服务器,1个主根服务器放在美国,其他12台为辅根服务器,DN

三十四、git rm简介

本文翻译整理自:http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-rm.html 在git中我们可以通过git rm命令把一个文件删除,并把它从git的仓库管理系统中移除.但是注意最后要执行git commit才真正提交到git仓库 示例1 git rm 1.txt 删除1.txt文件,并把它从git的仓库管理系统中移除. 示例2 git rm -r myFolder 删除文件夹myFold

Linux Shell系列教程之(十六) Shell输入输出重定向

本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为大家介绍下Shell输入输出重定向的相关知识. 一.Shell输入输出重定向概述 在了解重定向相关知识之前,我们先来看看Linux的文件描述符. Linux的文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 用

转载自知乎:程序员干到三十就干不动了」的说法是从哪来的?

http://www.zhihu.com/question/28432389 这类谣传很难追根溯源的. 最早大概来自8x-9x年代的第一代程序员. 这时候多半是一种自嘲. 那时改革开放没多久,国内IT业刚刚起步,教材.经典书籍什么的……还是别想太多了.当时很多基础性的东西甚至是靠类似反编译之类手段逆向出来的.从现象反推原因,自然错漏极多(比如谭浩强著名的i=i+i++错误,就属于这类问题),而且琐碎.不成体系. 比如,国内的编译原理教材,忘了是清华出的还是同济的,甚至连为什么需要终结符.终结符是

第十五章 shell正则表达式

第十五章 shell正则表达式 见图片 Shell正则表达式 正则表达式的分类 基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs) Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs) 基本组成部分 正则表达式的基本组成部分. 正则表达式 描述 示例 Bas

2018-07-30 第三十二课

第三十二次课 shell编程(二) 目录 十五.shell中的函数 十六.shell中的数组 十七.告警系统需求分析 十八.告警系统主脚本 十九.告警系统配置文件 二十.告警系统监控项目 二十一.告警系统邮件引擎 二十二.运行告警系统 十五.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可.定义函数必须要放在最前面.定义好的函数相当于是命令. 语法格式 //name属性定义了赋予函数的唯一名称.脚本中定义的每个函数

2018-08-24 第三十六课

第三十六课 非关系统型数据库-mangodb 目录 二十四 mongodb介绍 二十五 mongodb安装 二十六 连接mongodb 二十七 mongodb用户管理 二十八 mongodb创建集合.数据管理 二十九 php的mongodb扩展 三十 php的mongo扩展 三十一 mongodb副本集介绍 三十二 mongodb副本集搭建 三十三 mongodb副本集测试 三十四 mongodb分片介绍 三十五 mongodb分片搭建 三十六 mongodb分片测试 三十七 mongodb备份

第三十六章

将欲翕之,必姑张之:将欲弱之,必姑强之:将欲去之,必姑与之:将欲夺之,必姑予之.是谓微明.柔弱胜强.鱼不可脱于渊,邦利器不可以示人. 第三十六章1 想摆脱失眠?So easy! 将欲翕之,必姑张之 (第三十六章 第1讲) 姑:姑且,先. 上天想要把一件事情关上,就必先把它张开. 我们要懂得天地间阴阳变化的原理,顺着事物发展的原理去走.夜晚要想睡个好觉,白天就要打起精神做事. 各位朋友大家好,今天我们接着来聊<道德经>,看看老子又带给我们什么样的人生启发.今天,我们聊到了第三十六章,这是新的一章