shell 脚本学习

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)

IFS(Internal Field Seperator)在Linux的shell中预设的分隔符,用来把command line分解成word(字段)。
IFS可以是White Space(空白键)、Tab( 表格键)、Enter( 回车键)中的一个或几个。
IFS是shell脚本中的一个重要概念,在处理文本数据时,它是相当有用的。内部字段分隔符是用于特定用途的定界符。IFS是存储定界符的环境变量,它是当前shell环境使用的默认定界字符串。

14.""与''的区别?

   " " 在双引号中,大部分的操作符都不会被屏蔽,只保留$,`,\。

   ' '在单引号中,所有的操作符都会被关闭,不起作用。



15. shell中的常见操作符:

= 设定变量

$ 做变量替换

> 重定向标准输出

< 重定向标准输入

| 管道

&

() 将其内的命令置于nested subshell执行,或用于运算、或命令替换

{} 将其内的命令置于non-named function中执行,或用在变量替换的界定范围

在前一个命令结束时,而忽略其返回值,继续执行下一个命令

&& 在前一个命令结束时,若返回值为true,继续执行下一个命令

|| 在前一个命令结束时,若返回值为false,继续执行下一个命令。

! 执行history列表中的命令




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值