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

shell编程基础

2015-03-27 02:04 253 查看
shell,即命令解析器,将用户输入的指令转换为相应的机器能够运行的程序。

shell脚本的第一行必须是如下格式:

#! /bin/sh

符号#!用来指定该脚本文件的解析程序。

当编辑好脚本后,如果要执行该脚本,还必须使其具有可执行属性,即执行以下命令:

chmod +x filename

1.注释

在shell程序中,以#开头的句子表示注释,直到这一行结束。

2.变量

在shell编程中,所有的变量都由字符串组成,并且不需要预先对变量进行声明。有时候变量名很容易和其他字符混淆,可以使用{}来区分,例如:echo "this is the ${num}nd people."。

2.1 默认变量

$#:传入脚本的命令行参数个数。

$*:所有命令行参数值,各个参数值之间用空格隔开。

$0:命令本身(shell文件名)。

$1:第一个命令行参数。

$2:第二个命令行参数。

2.2 局部变量

在变量首次被赋值时加上local关键字可以声明一个局部变量。

2.3 注意

变量赋值时,“=”左右两边都不能有空格。

BASH中的语句结尾不需要分号。

3.if语句

if [ expression ]

then

#code block

else if [ expression ] #或者是:elif [ expression ]

then

#code block

else

#code block

fi

fi

4.比较操作

相同 -eq =

不同 -ne !=

大于 -gt >

小于 -lt <

大于或等于 -ge

小于或等于 -le

为空 -z

不为空 -n

5.if语句和比较操作举例(test.sh):

#! /bin/bash

a=$1

b=$2

if [ -z $a ] || [ -z $b ]

then

echo "please enter two numbers."

exit 1

fi

if [ $a -eq $b ]

then

echo "number a == number b"

else if [ $a -gt $b]

then

echo "number a > number b"

elif [ $a -lt $b ]

then

echo "number a < number b"

fi

fi

#注意在“[”和“]”左右都要有空格

#注意“=”左右都要有空格

6.文件判断

-e 文件已经存在

-f 文件时普通文件

-s 文件大小不为零

-d 文件是一个目录

-r 文件对当前用户可以读取

-w 文件对当前用户可以写入

-x 文件对当前用户可以执行

7.for循环

基本结构是:

for var in [list]

do

#code block

done

其中var是循环控制变量,[list]是var需要遍历的一个集合,do/done对包含了循环体。另外如果do和for被写在同一行,必须在do前面加上“;”。如果list列表被包含在一对双括号中,则被认为是一个元素。

8.while循环

while循环的基本结构是:

while [ condition ]

do

#code block

done

9.until循环

until循环的基本结构是:

until [ codition ]

do

#code block

done

10.case语句

bash中的case结构与c语言中的switch语句的功能类似,可以用于进行多分支控制。

case "$var" in

codition1)

;;

codition2)

;;

*)

default statments;;

esac
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: