Linux操作系统实验1 bash脚本编程

====

shell是Linux系统的命令语言解释器,这个解释器有许多版本,bash是绝大多数linux系统的默认shell解释器。

bash脚本,就是命令脚本,执行bash脚本,可以自动地执行脚本中的一系列命令,就不需要直接在终端编辑了。

一般语法

  1. 对所有可执行bash文件在系统bin文件夹下,则第一行固定用

    ​ #!/bin/bash

    一般地,习惯用第二行用注释写出文件名,

    ​ #!/bin/bash

    ​ # name:hello

  2. #表示注释,相当于C语言中的’//'符号,注释到行末。

环境变量

在bash脚本中也可以定义环境变量,

​ msg=‘hello,world!’

定义了一个环境变量msg,它包含字符串"hello,world!"。注意等号两边不能有空格。在环境变量前加一个$,可以使用该环境变量的值。

​ echo $msg

为了将环境变量和其他文字分开, m s g 也 可 以 用 msg也可以用 msg{msg}

环境变量还有一个特别的好处,可以向子进程传递数据,而无论子进程是一个可执行文件还是另一个脚本,具体方法为

​ export $msg

这样在以后启动子进程时,变量msg就传过去了,可以在子进程中使用此变量。

另外,还有一些只读的特殊环境变量,如$1,$2,$3,…,分别表示调用此脚本时的第一、二、三个参数, 0 表 示 带 全 路 径 的 脚 本 名 , 0表示带全路径的脚本名, 0#表示脚本的参数个数,KaTeX parse error: Undefined control sequence: \* at position 1: \̲*̲表示所有参数构成的一个单字符串…?表示最近运行的命令的退出状态。

控制结构

bash脚本语言也有控制机制,如if、case、for、while、until。

下面命令中的所有分号";"均可以用一个或多个换行符来替代。

if语句

if A;then
	B;
(elif C;then
	D;)
(else 
	E;)
fi

小括号中的为备选项,用来完成多路条件结构。

比较运算符

bash提供了很多用于文件和字符串的比较运算符,现查现用吧,实在太多了。下面举个例子

​ -e filename 判断文件是否存mingwei在

if [-e "$1"]

意为判断以第一个命令行参数为名的文件是否存在。

case语句

用于匹配字符串并执行相应命令,由于牵涉到了正则表达式,所以有点麻烦,先不写了,有问题直接查《Linux操作系统实验教程》P62。

for语句

for name [in words …]; do commands; done

对于words中的每一个字符串,都将其赋值给变量name,然后执行命令列表commands,比如下面的表述

#!bin/bash
# name: test-for
for para in "$@"
do
	echo ${para}
done

执行命令行: $./test-for a b c

运行结果:

a

b

c

这个脚本遍历每个输入参数,并原样输出。

while语句

#!bin/bash
# name: XXXX
while [expression]
do
	statements
done

很好理解,不解释了。

函数

#!bin/bash
# name: XXXX
myfunc()
{
	...
}
myfunc arg1

你可能感兴趣的:(Linux)