----------------------------shell脚本简介------------------------------------------

shell脚本,简而言之,就是在text文件写的一些命令的集合

一个脚本的文件权限不一定是可执行的,但一定要是可读的

bash指令能够在子shell中产生一个脚本

前面我们讲过 chmod指令可以修改文件的权限脚本同样也是一个文件,

将脚本修改为一个可执行文件(程序),即可执行

./<filename>  在当前路径下执行

---------------------------脚本的执行-----------------------------------------------

通过<.>或 source指令可以执行脚本,一个脚本的执行可能会改变你当前的环境,大部分的脚本都是在bash中运行的

为了确保脚本在你指定的shell中执行

可用如下指令:

#!/bin/<shellname>  表示强制

----------------------典型的shell脚本的内容----------------------------------------

一. shell脚本的参数

1.位置参数:由系统提供的参数

$<num> :  0为程序名,1.......代表第n个参数

2.内部参数:必不可少的参数

$@ : 是所有参数分别作为一个字符串的集合

$* : 是所有参数组成的一个字符串

$# : 返回参数的个数

$?:  返回脚本执行后的返回值,成功为0 , 失败为0

---------------例子来也----------------------------------------------------------

Linux之ubuntu学习笔记(九):shell 脚本_linux操作系统

---------------例子去也-----------------------------------------------------------------------

-----------------------一丢丢复杂的I/O重定向与管道---------------------------------------------

cat << END > <filename>

可以向该文件出入多条文本,以END为截止符号

END可以由其他字符串替代

为了方便通过管道传递参数我们引入一个xargs指令

xargs指令能够从stdin读入内容,并根据设定的间隔符号(默认为空格),将文本内容分解为参数,方便管道传输中一些参数的传递

下面是它的一些options:

-0 : 当stdin中输入了一些元字符时,当作普通字符处理

-a <filename> : 将stdin转换成 文件读入

-e <flag> : 表示在读入时终止读入的字符

-d <flag> : 转换为参数的间隔符号,默认是空格

----------------------条件检测指令test-------------------------------------------------------------------

格式是  text [-options] <filename>

下面是一些常用的options:

1.判断句的格式:

if test ( 表达式为真 )

if test (表达式为假)

test [表达式1]-a [表达式2] 两个表达式同时为真

test[表达式1] -o [表达式2] 两个表达式同时为假

2.判断文件(以下均是表达式写法):

-f  判断文件是不是一个普通文件

-d 判断文件是不是一个文件夹

-r 判断文件是不是可读

-w 判断文件是不是可编辑

-x 判断文件是不是可执行

3.判断字符串

-n <string> : 字符串长度不为0

-z <string> :字符串长度为0

<string1> == <string2> :两个字符串相等

<string1> != <string2> :两个字符串不相等

4.判断数值的比较

<value1> -eq <value2>: 相等

<value1> -ne <value2>: 不等

<value1> -lt <value2> : 小于

<value1> -le <value2> : 不大于

<value1> -gt <value2> :大于

<value1> -ge <value2> : 不小于

---------------&&和||指令---------------------------------------------------

与C++中符号作用可不同,不要混淆。。。。。

 command1 && command2:

若指令1成功,那么执行指令2

 command1 || command2 :

若指令1失败,那么执行指令2

-------------------------if指令------------------------------------------------

很简单。。。给出格式,就这样把

if [ 命令序列组成的表达式 ( 返回true(0) ) ] (方括号和语句间的空格是必须的)

then

要进行的指令

else

要进行的指令

fi

结束

------------------------循环结构---------------------------------------------------

1.while循环结构

while ( true)

do

一堆指令

done

结束

2.for <indentifier> in <list>

do

一堆指令

done

for 的形式很多,上面这种最常用,下面举个例子,方便理解

--------------------栗子君-----------------------------------------------------------

Linux之ubuntu学习笔记(九):shell 脚本_linux操作系统_02

--------------------例子君-----------------------------------------------------------

-----------------shift是左移指令------------------------------------------------------------------

用一个图解解释,就很容易懂了

Linux之ubuntu学习笔记(九):shell 脚本_终端_03

-------------------------read指令---------------------------------------------------------------------

read指令可以用来通过stdin读入一行,然后把读到的值赋值一个变量

下面用一个例子说明

---------------------我是例子--------------------------------------------------------------

Linux之ubuntu学习笔记(九):shell 脚本_shell_04

---------------------还是我-----------------------------------------------------------------

-------------------------在bash中利用简单的整数运算-----------------------------------

两个命令比较常用,一个是let , 一个是 $(()) 命令:

应用如下:

Linux之ubuntu学习笔记(九):shell 脚本_终端_05

支持 + , - , * , / , %

------------------------就这样了------------------------------------------------------------------------