一、shell基本介绍
Shell就是一个命令行解释器,它的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式。
Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本是需要解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。作为程序设计语言,它虽然不是 Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
Linux的Shell种类众多,不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell。所以本文主要介绍bash。
二、 shell脚本
查看当前的默认shell
[[email protected] ~]# echo $SHELL
查询当前系统一共有哪些shell
[[email protected] ~]# cat /etc/shells
三、 shell执行脚本
1、shell脚本简介
打开文本编辑器(可以使用vi/vim命令来创建文件),新建一个文件chen.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好了。
进入一个空白的文件编辑器,输入一些代码,第一行一般是这样:
#!/bin/bash
shell脚本第一行必须以#!开头,表示该脚本使用后面的解释器解释执行。#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,使用哪一种Shell。
2、自动创建文本
所有的脚本在编辑的时候都有标准格式,每次需要新建脚本文件时都需要添加标准格式,浪费时间。所以需要创建一个脚本文件,该脚本文件的作用是:在需要新建脚本文件时,直接使用’绝对路径/该脚本文件名+新建脚本文件名.sh‘ 进行编辑,打开文本编辑器。
(1)首先介绍能够自动创建文本的脚本文件,在root/bin/下创建一个 名为createsh.sh的脚本文件。
打开文本编辑器后输入以下内容;
#!/bin/bash echo "#!/bin/bash" >$1 # echo 命令用于向窗口输出文本 echo "#--------------------------" >>$1 #‘ #’开头的部分为注释内容并把内容追加'>>'到$1 echo "#Filename:$1" >>$1 # 以下内容标记具体内容并追加到$1文件 echo "#Revision:1.0" >>$1 echo "#Date:$(date +"%F")" >>$1 echo "#Author:wang" >>$1 echo "#Email:[email protected]" >>$1 echo "#Website:www.magedu.com" >>$1 echo "#Description:" >>$1 echo "#--------------------------" >>$1 echo "" >>$1 chmod +x $1 #使$1文件具有执行权限 vim + $1 #自动生成并执行$1
(2)新建名为chen.sh 的脚本文件 ,执行‘/root/bin/createsh.sh chen.sh ’命令直接进入编辑。
进入文本编辑器,里面已经含有/root/bin/createsh.sh中的内容。
四、变量
变量分为局部变量和环境变量。
局部变量:仅对当前shell有效,子shell不继承。
环境变量:也叫全局变量,对当前shell和子shell均有效。
1、局部变量
局部变量仅对当前shell有效,子shell不继承!可通过set命令查看所有的局部变量。
[[email protected] ~]# a=666 [[email protected] ~]# echo $$ #查看当前shell号 为3058 3058 [[email protected] ~]# echo $a 666 [[email protected] ~]# bash #进入子shell [[email protected] ~]# echo $$ #查看当前shell号 为3123 3123 [[email protected] ~]# echo $a #不再显示666 [[email protected] ~]#
2、环境变量
环境变量:也叫全局变量,对当前shell和子shell均有效。env 查看所有的环境变量。
export 局部变量名
export 变量名=值
[[email protected] ~]# export name="chen" [[email protected] ~]# echo $name chen [[email protected] ~]# echo $$ #查看当前shell号 为3123 3123 [[email protected] ~]# bash #进入子shell [[email protected] ~]# echo $$ #查看当前shell号 为3711 3711 [[email protected] ~]# echo $name chen [[email protected] ~]# bash #再次进入子shell,可理解为孙shell [[email protected] ~]# echo $$ #查看当前shell号 为3721 3721 [[email protected] ~]# echo $name chen
通过 xport 变量名=值 设置环境变量,在当前shell有效(echo $$ 可以查看当前shell号),bash进入子shell,变量依然有效。
3、 unset 取消变量
原文地址:http://blog.51cto.com/13869720/2151468