1.shell脚本的第一行总是以#!/bin/sh开始,这段脚本是通知shell使用系统上的Bourne shell解释器。
2.第二行注释中写入脚本名是一个好习惯。
3.shell提供三种逻辑操作完成此功能。
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
4.字符串测试有5种格式:
test "string"
test string operator "string"
test "string" string_operator "string"
[string_operator string]
[string string_operator string]
string_operator可以为:
= 两个字符串相等。
!= 两个字符串不等。
-z 空串。
-n 非空串。
5.测试数值可以使用许多操作符,一般格式如下:
"number" numeric_operator "number"
或者
[ "number" numberic_operator "number"]
numeric_operator可为:
-eq 数值相等
-ne 数值不相等
-gt 第一个数大于第二个数
-lt 第一个数小于第二个数
-le 第一个数小于等于第二个数
-ge 第一个数大于等于第二个数
6.expr是一种调节测试命令,expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
expr也是一个手工命令计数器,可以直接在系统下,直接操作。
$expr 30 / 3
10
a.expr用于增量计数
b.数值测试,expr测试成功返回1,任何其他值为无效或错误。
c.模式匹配,使用expr通过制定冒号选项计算字符串中字符数。 .*意即任何字符重复0次或多次。
7.退出状态
任何命令进行时都将返回一个退出状态,其退出状态的查看,使用最后状态命令:
echo $?
退出状态0 退出成功,无错误;
退出状态1 退出失败,某处有错误。
8.if then else语句
if语句的格式如下:
if 条件1
then 命令1
elif 条件2
then 命令2
else 命令3
fi
9.特定变量参数,共有7个特定变量
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的进程ID号
$@ 与$#相同,但是使用时加引号,并在引号中返回每个参数
$- 显示shell的当前选项,与set命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其他任何职表示有错误。
10.for循环的一般格式为:
for 变量名in列表
do
命令1
命令2...
done
11.变量的换行,使用“回车”直接换行,不用使用反斜杠。
12.echo操作的一般形式是:
echo option argument
echo在默认的情况下,在显示玩argument后,会添加一个换行符。
echo有如下常用选项:
-E 关闭反斜杠控制字符的转换
-n 取消行末之换行符
-\a 从系统喇叭送出铃声
-\b 向左退格键
-\c 取消行末的换行符
-\e 空格键
-\f 换页符
-\n 换行符
-\r 回车键
-\t 表格字符
-\v 垂直表格符
13.什么是IFS(Internale Field Seperator)
14.""与''的区别?
" " 在双引号中,大部分的操作符都不会被屏蔽,只保留$,`,\。
' '在单引号中,所有的操作符都会被关闭,不起作用。
15. shell中的常见操作符:
= 设定变量
$ 做变量替换
> 重定向标准输出
< 重定向标准输入
| 管道
&
() 将其内的命令置于nested subshell执行,或用于运算、或命令替换
{} 将其内的命令置于non-named function中执行,或用在变量替换的界定范围
; 在前一个命令结束时,而忽略其返回值,继续执行下一个命令
&& 在前一个命令结束时,若返回值为true,继续执行下一个命令
|| 在前一个命令结束时,若返回值为false,继续执行下一个命令。
! 执行history列表中的命令