阅读232 返回首页    go 阿里云 go 技术社区[云栖]


linux shell 编程

shell 编程

1.简述

利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:

#!/bin/bash
#comments
Your commands go here 

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

除第一行外,以#开头的行就是注释行,直到此行的结束。如果一行未完成,可以在行尾加上",这个符号表明下一行与此行会合并为同一行。

2.变量

有环境变量、内部变量、用户变量。

Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型。

variable_name = variable_value

取值的时候要在变量名前加$,$variable_name可以在引号中使用,这一点和其他高级语言是明显不同的。

特殊变量

$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

demo:

3.数字比较

-eq  equal

-ge greater or equal

-le less or equal

-ne not equal

-gt greater than

-lt less than

4.字符串比较

== 是否相等

 !=  是否不等
-n 长度是否大于0
-z 长度是否等于0

5.文件操作符

-d 是否为目录

-f 是否为文件

-r 是否可读

-w 是否可写

-x 是否可执行

6.逻辑运算符

! 等价c语言 !

-a 等价c语言 &&

-o 等价c语言 ||

7.for语句

for current_variable

do

  statements

done

8.if语句

if [ expression ] ; then
statements
elif [ expression ] ; then
statements
else
statements
fi
说明:elif或else语句不是必需的。

9.case语句

 case str in
str1 | str2)
statements;;
str3|str4)
statements;;
*)
statements;;
esac

说明:*对应C语言的 default; ";;"对应C语言的break。

10. exit语句

 退出shell程序并返回一个值,方便被另一个shell调用并给出反馈。

11.函数

 func(){
statements
}


12. shell脚本中执行其他shell脚本

12.1 直接调用

如 /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh
运行的时候开一个sub-shell执行调用的脚本,sub-shell执行完毕后返回parent-shell。 sub-shell从parent-shell继承环境变量,但是sub-shell中的环境变量不会带回parent-shell。

12.2 exec

exec /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh
在当前shell下执行目标脚本,执行结束后,当前脚本中exec行之后的内容就不会再执行了。

12.3 source

source  /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh  或   .   /root/soft/apache-tomcat-8.0.21/bin/shutdown.sh

source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。

读取目标脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

最后更新:2017-04-03 08:26:12

  上一篇:go Javac源码简单分析之Javac简单介绍
  下一篇:go Visual Studio 2008项目中WinForm窗体图标显示为类图标,只能打开代码而无法打开视图问题解决