读书人

Linux shell语法总结

发布时间: 2012-07-19 16:02:20 作者: rapoo

Linux shell语法小结

变量

含义

$#

参数个数

$*

所有参数

$@

同上,稍有区别

$-

Shell的选择项

$?

上次执行命令返回值

$$

Shell的进程标识符

$!

用&启动的最后一个命令的进程标识符

$HOME

cd命令的缺省参数

$IFS

参数分割词的字符表

$MAIL

信件文件,当其改变时给出信息you have mail

$PATH

搜索命令的目录表

$PS1

提示符串,缺省为$

$PS2

后继命令行提示符,缺省为>

有关$*和$@得归纳:

?$*和$@扩展为参数,并被重复扫描;参数得空格将字符串分成多个参数;

?“$*”表示shell文件的所有参数及其空格连在一起作为单个词处理;

“$@”与shell文件接收的参数等价,参数中的空格被忽略,其结果是等同于原来参数的一个单词列表。

?

10、?shell模式匹配规则

*??????匹配任意字符串,包括空字符串

???????匹配任意单字符串

[ABC]??匹配ABC中任意字符

“…”???完全与…匹配,引号保护特殊字符,也可以写成’…’

\C?????匹配C

?

11、?case语句

case word in

??模式1)??命令;;

??模式2)??命令;;

??…

??*)???????命令[;;]

esac

只能匹配一个模式

?

12、?if?语句

if?命令

then

else

fi

其中换行很重要,then、else和fi仅在换行或分号之后被识别,else部分可选。可以利用case语句替代if和test测试语句,对于test命令不是内部命令的情况下,case语句执行的要快;

?

13、循环

1)for i [in?文件(参数)列表]

do

??循环体

done

????????如果i后面没有in部分,则隐含地表示对shell文件的全部参数,即$*

?

????? 2)?While?命令

????????????do

??????????????????循环体,只要命令返回状态为真便继续进行

? done

?

3)until?命令

do

???循环体,只要命令返回状态为假便继续执行

Done

?

例如:

While sleep 60

do

Done

每隔60秒执行一次循环中的操作;

?

?? 另外,where处的控制命令可以是true、false、或者是:,冒号命令是一个shell内部命令,仅仅计

?? 算参数值,然后返回“真”,但是它不需要调用系统中的命令,所以效率比true命令高;

?

? 4)break命令:退出循环,取自C语言。

?

14、点号命令:

???将文件作为标准输入,从中读入一行一行的命令在当前shell中执行,不要求文件具有可执行权限;

?

15、?文件命令习惯,后面加上当前进程号码$$为好

?

16、标准输入命令read

$read greeting

Hello,world

????????? ?$echo $greeting

?????????????????Hello,world

?

17、here document 输入

???????? <<s???从本地输入,直至出现字符串s为止,但是要解析输入中的特殊字符,``,$和\。

????<<’s’?同上,不进行替换。

????<<\s?同上。

?

本文转自:

http://blogold.chinaunix.net/u1/34739/showart_283263.html

?

其它相关资料:

Linux Shell编程入门

http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html

?

?

Linux Shell语法速查表(用C语言语法来作对比)

http://blog.csdn.net/kwiner/archive/2009/04/05/4049640.aspx

?

1 楼 hu_hu1221 2012-02-15 IFS换行这个真变态,我用\n试了不成还以为是其他哪儿写错了呢!

读书人网 >UNIXLINUX

热点推荐