shell程序设计的基础语法

变量的声明和使用

1、用户自定义变量

变量的声明格式及赋值如下:  变量=值(注意等号两边不能有空格)

对用户自定义变量进行调用需要在变量前加$,而且需要用 { } 括号括起来,同其他字符分开。


2、位置变量,也称为参数变量

bash在解释用户命令时,会把所输入的命令后面的参数使用位置变量传递给bash脚本程序

例如这条命令:     mv    old.txt   new.txt

$1,$2,...,$n   分别代表参数1、参数2。

$0   代表脚本的名字。

$*    这个变量包括参数的列表。

$@  这个变量包括参数的列表(用空格隔开)。

$#   这个变量包括参数的个数。

3、环境变量,shell运行时系统运行时自动设置的一些变量

【shell环境变量】

环境变量
说明
$HOME
用户的主目录
$IFS
内部的域分隔符,一般为空格符、制表符或换行符
$PATH
寻找命令或可执行文件的搜索路径列表,路径以冒号分隔
$PS1
主命令提示符,默认为“$”
$PS2
从命令提示符,默认为“>”
$TERM
使用的终端类型

【shell脚本程序特色变量】

环境变量
说明
$$
shell脚本的进程号
$?
紧邻的前驱命令的返回值
$*
参数列表,各个参数之间用环境变量IFS中的而第一个字符隔开
$@
参数列表,它是$*的一种变体,它不使用IFS环境变量,所以当IFS为空时,参数的值不会结合在一起
$0
shell脚本名称
$n
位置参数1 2 3.....


算术运算

1、expr命令把一个算术表达式最为参数:    expr   arg

arg通常为“[操作数] [运算符] [操作数]”

用户必须保证参加算术运算的操作数必须为数值。

2、let命令实现运算 :  let  arg1 [arg2....]

3、使用 $() 扩展,把准备求职的表达式放在里面


条件判断

与C语言相反,0表示真,1表示假。

1、比较两个字符串之间的关系

字符串比较
说明
string1 != string2
相同为真
string1 = string2
不同为真
-n string
不空为真
-z string
空为真

2、比较两个整数之间的关系

算术比较
说明
expr1 -eq  expr2
相等为真
-ne
不等为真
-gt
大于为真
-lt
小于为真
-ge
大于等于为真
-le
小于等于为真
!expr
表达式为假   则真

3、测试文件是否存在或是否具有某种状态或属性

-d file
如果文件是一个目录,则真
-e file
文件存在 ,则真
-f file
文件是普通文件 ,则真
-g file
文件的SGID为被设置,则真
-r file
文件可读,则真
-s file
长度不为0,则真
-u file
文件SUID为被设置,则真
-w file
文件可写,则真
-x file
文件可执行,则真
condition1 -a condition2
逻辑与
condition1 -o condition2
逻辑或
!condition1
逻辑非

4、多个条件的逻辑组合(与或非)


控制结构

1、if分支语句

if 条件1

then

命令

[elif 条件2

    then

    命令]

[else

    命令]

fi

2、case分支语句

case 条件 in

模式1)

    命令1

    ;;

[模式2)

    命令2

    ;;

.....

模式n)

    命令n

    ;;]

esac

下面列举一些常用的匹配规则:

?    仅仅与一个任意字符匹配

*    匹配任意字符

[..]   同方括号内的任意一个字符相匹配

[!..]    与所有不在方括号中的某个字符匹配

{c1,c2}    同c1或c2箱匹配

3、for语句

for 变量 [in 列表]

do

命令

done

for语句循环遍历列表中的各个值,对每个值执行一次语句块 。如果中括号中的部分省略掉,bash则认为是“In$@”,即执行该程序时通过命令行传给程序的所有参数的列表。

4、while和until语句

while/until 条件

do

    命令

done

与循环有关的命令有:break  continue  shift,用于调整位置变量的,每执行一次shift,就使位置变量左移动一个位置


函数使用

[function] 函数名()

{

    命令

}

函数名[参数1  参数2 ....参数n]

如果没有在一个函数内使用return命令指定一个返回值,,函数返回的就是执行的最后一条命令的返回值。

你可能感兴趣的:(shell程序设计的基础语法)