您的位置:首页 > 运维架构 > Shell

Linux学习笔记之(1):学习shell script

2016-10-20 09:19 239 查看
        shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能,以达到我们所想要的处理目的。

一.第一个script的编写与执行

执行:命令的执行从上而下,从左而右的分析与执行;命令、参数间的多个空白会被忽略、空白行也被忽略、[tab]键视为空格键;如果读到一个符号,就尝试执行该行命令,内容太多,可以使用\[ENTER]来扩展到下一行;#可作为批注。

1.直接命令执行:需要rx权限./shell.sh

2.以bash进程执行:需要r权限bash shell.sh或sh shell.sh

直接执行和bash/sh执行,script是在子进程的bash内执行的,执行结束后,子进程内的各项变量或操作将会结束而不会传回到父进程中;利用source执行脚本,在父进程中执行

编写:mkdir scripts;cd scripts   gedit sh01.sh

#!/bin/bash

#程序内容说明

PATH=/bin/:/sbin/...............

export PATH

echo -e "HelloWorld! \a \n"

exit 0

第一行#!/bin/bash声明这个script使用的shell名称

第三行主要环境变量声明,最后一行告知执行结果,可用echo $?查看结果

数值运算:var=$((运算内容))

二.善用判断式

1.利用test命令的测试功能:检测文件是否存在和其相关属性

2.利用判断符号[]:数据判断,中括号内每个组件都需要空格键来分割,括号内的变量最好以双引号括起来,常量以单或双括号括起来。

3.shell script的默认变量:$0执行脚本文件名,$1 $2...接受的参数,$#代表后接参数的个数,$@代表"$1","$2"...之意,每个变量是独立的,$*代表$1c$2c$3c$4,c为分割符,  默认空格键;shift:造成参数变量号码移位,shift后面可接数字,表示拿掉最前面的几个参数的意思

三.条件判断式

1.利用if...then

单层/简单条件判断式:

if [条件判断式] ; then

.....

fi

多个条件判断式时[]&&[]代表and,[] || []代表or,&&和||与程序的连续执行区别开

多重/复杂条件判断式:

if [  ] ;then

...

else

...

fi

if [  ] ; then

...

elif [  ] ; then

...

else

...

fi

2.利用case...esac判断

多个既定内容的判断:

case $变量名 in

"第一个变量内容")

 ;;

"第一个变量内容")

;;

*)

exit 1

;;

 esac

如/etc/init.d/syslog restart的重启

3.利用function功能

类似自定义执行的东西:function设置要写在程序的最前面

function fname () {

       程序段

}

function也拥有内置变量,$0$1$2....

四.循环(loop)

1.不定循环while do done,until do done

while [condition]

do

    程序段

done

condition成立时,进入循环

until [condition]

do

   程序段

done

condition成立时,终止循环

2.固定循环for...do..done

for var in con1 con2 con3
do

   程序段

done

知道循环几次

for  ((初始值;限制值;执行步长))

do

   程序段

done

五.shell script的追踪与调试

sh [-nvx] scripts.sh

-n:不要执行script,尽查询语法错误

-v:在执行script前,先将script内容输出到屏幕上

-x:将使用到的script内容显示到屏幕上,这是很有用的参数

shell script的学习,需要多看,多模仿并加以修改成自己的样式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: