小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
这是数学表达式的一种格式,多练练就记住了;