9.bash shell编程

9.11 建立shell脚本的步骤

Shell脚本通常在编辑器中编写,由命令和注释组成。注释通常以#开头,用于说明程序将要做什么事情。

第一行。在脚本左上角的第一行用来说明程序执行脚本的那一行。这行通常称为shbang行。写作:

#!/bin/bash

#!被称为魔术数字(magic number),用于供内核确认哪个程序将翻译并执行这个脚本。该行必须在你的脚本的第一行。

使脚本可执行。当你创建一个文件后,它并没有执行的权限。你需要权限去执行它,通过chmod可以将其权限改变为可执行

Chmod +x myscript


9.2 读取用户输入

9.2.2 read 命令

read 命令是用于从终端或者文件中读取输入的内键命令。

Read命令读取整行输入,每行末尾的换行符倍翻译为Null(空字符串).如果没有知道名称,读取的行就被赋值给一个特定的变量reply。你也可以使用read命令。如果没有指定名次,读取的行就被赋值给一个特定的变量reply。你也可以使用read命令,使得程序停下来等待用户输入回车。

Read命令

格式

含义

Read answer

从标准输入读取输入并赋值给变量answer

Read first last

从标准输入读取输入到第一个空格或者回车,将输入的第一个单词放入变量first中,并将该行其他的输入放在变量last

Read

从标准输入读取一行赋值给变量reply

Read –a arrayname

把单词清单读入一个叫作arrayname的数字里

Read –e

在命令行状态下打开命令行编辑。如果编辑器是vi,那么在提示符下就可以直接使用vi命令了

Read –p prompt

打印提示,等待输入,并将输入存储在reply

Read –r line

允许输入包含反斜杠

9.3 数学计算

9.3.1 整数(declare命令和let命令)

Declare命令。用declare –i 命令可以将变量声明为整数。如果将字符串赋值给整数变量。Bash将把0赋值给该变量。

整数变量清单。Declare –i 命令后面不加任何参数,将显示所有的整数变量和他们的值。

Let命令。Let命令是bash的内建命令,用来做数学计算和数字表示法检测。

9.4 位置参量与命令行参数

9.4.1 位置参量

信息可以通过命令行传递给脚本。在脚本名称后面以空格分隔的单词称为参数。

命令行参数在脚本中可以按照其位置提供参考作用。变量$#用来判断参数的个数,而$*用来显示所以的参数。

位置参量

位置参量 含义

$0 引用脚本名称

$3 获取位置参量的个数

$* 列位置参量清单

$@ 同上

“$*” 扩展为一个参数

“$@” 扩展为彼此分隔的参数

$1….${10} 引用单个位置参量

9.4.2 set命令和位置参量

set命令可以用来重置位置参量。一旦重置,旧的参考变量清单旧丢失了。恢复位置参量用命令set -- , $0永远是脚本名。

9.5 条件结构和流控制

退出状态

Bash 允许两种类型的条件控制:命令的成功或者失败,表达式的真或者假。在两种情况下都需要使用退出状态。退出状态值为0表示成功或者为真,否则为失败或者为假。?状态变量报错了一个退出状态值相互对应的数值。

内键test命令

通常用内键的test命令给表达式赋值,这个命令也用来连接括号。可以使用test命令,或用一系列的括号代替test命令。只有test命令或者使用方括号时,表达式不能赋值。因为空格在字符串中用来分隔单词,所以包含空格的单词需要使用使用引号。

bash 2.x版本中,[[]]可以用来给表达式赋值(内键混合的test命令)。包含空格的字符串在整体使用时必须被引号引用。在简单test命令中,逻辑符号&&(逻辑和)||(逻辑或)可以替代-a 或者 –o选项。

Test命令操作符

判断操作符

判断是否为真

字符串判断

[string1=string2]

String1等于string2

[string1==string2]

String1 等于 string2

[string1!=string2]

String1 不等于 string2

[string]

String 不空

[-z string]

String 长度时0

[-n string]

String 长度非 0

[-l string]

String 长度

逻辑判断

[string 1 –a string 1]

String1 string2都是真

[string1 –o string2]

String1 string2 是真

[!string1]

String1不匹配

逻辑判断(符合判断)

[[pattern1&&pattern2]]

String1 string2都是真

[[pattern1 || pattern2

String1 string2 是真

[[!pattern]]

String1不匹配

整数判断

[int1 –eq int2]

等于

[int1 –ne int2]

不等于

[int1 –gt int2]

大于

[int1 –ge int2]

打印等于

[int1 –lt int2]

小于

[int1 –le int2]

小于等于

文件判断中的二进制操作

[file1 –nt file2]

File1 file2

[file1 –ot file2]

File1 file2

[file1 –ef file2]

File1 file2有相同的设备或者i结点数

Let命令操作符

9.5.3 if命令

9.5.4 if/elif/else命令

9.5.5 文件检验

9.5.6 null命令

Null命令用冒号表示,是一个内键的什么都不做的命令,返回状态值为0。如果在if命令后面没有内容,同时有要避免产生错误信息,旧需要在then后面写null语句。通常null命令作为loop命令的参数来建立一个无限循环。

9.5.7 case命令

Case命令是一个多路分支判断语句,可以用来替换if/elif结果。Case命令会尝试用变量匹配value1,value2….直到匹配找到,一旦一个值匹配了case变量,就执行这个值后面的语句直到两个分号为止。然后就从esac(就是case的反向拼写)后面开始执行。

如果case变量没有被匹配,程序就执行*)后面的语句,直到遇到;或者esac为至。*)d 作用跟在if/elif中的else的作用是一样的.case值中允许出现shell通配符和竖线(管道)作为or操作符。

Case variable in

Value1

Command(s)

;;

Value2

Command(s)

;;

*)

Command(s)

;;

esac

9.6 循环命令

For 命令

While命令

Until命令

Select命令和菜单

Here文档是建立菜单的简单方法,但是bash介绍了另外一种循环机制,叫作select循环,主要的作用就是建立菜单。一个数字化的菜单显示在标准错误上,PS3用来提示用户输入。默认的PS3#?.PS3提示显示以后,shell就等待用户输入。输入的是该菜单中的数字,若输入被报存在指定变量REPLY中,则变量REPLY中的数字与括号右边选项清单中字符串有着对应的关系。

Looping命令

Shift命令。Shift命令用来把参量列表位移知道次数。没有参数的shift把参数变量表向左位移一位。一旦位移发生,被位移出列表的参数就被永远删除了。通常在while循环中,shift用来读取列表中的参量。

Break命令。内键break命令用来从循环中强行退出,但是不退出程序。

Continue命令。如果某些条件为真,continue命令就控制跳转到循环的顶部。

9.7 函数

9.8 陷阱信号

9.9 调试

9.10 getopts处理命令行选项

9.11 Eval命令与命令行解析

9.12 Bash选项

9.13 Shell内键命令

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/312079/viewspace-245453/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/312079/viewspace-245453/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值