分类: LINUX
2016-09-24 20:29:45
原文地址:02-Shell 程序设计 作者:Mrt-l
Shell 程序设计
什么是 shell
shell 是用户与 LINUX 系统间接口的程序,它允许用户向操作系统输入需要执行的命令 。shell 在表面上与 WINDOWS 的命令提示符相似,但是它具有完成复杂程序设计的功能。通过 shell 可以执行命令,调用 LINUX 工具,还可以自行编写程序。shell 使用解释型语言,指令不需要编译且是逐行执行的,所以当 shell 出现语法错误时,只有执行到才会被发现。在 LINUX 系统中可以通过命令 #/bin/sh –version 来查看 shell 的版本。我的LINUX (Fedora9)shell 的版本是:GNU bash, version 3.2.33(1)-release (i386-redhat-linux-gnu)
重定向输出
默认情况下,shell_test的内容被覆盖
默认情况下,输出的内容附加到shell_test的末尾
shell 语法
1、 变量
shell 变量在使用前不需要先定义,大小写敏感。默认情况下,所有变量都被看做是字符串并以字符串来存储。在变量面前加一个 $ 号来访问变量,如 $a ,即访问变量 a 的内容。如果字符串里面包含有空格,要用引号把它们括起来,且等号两边不能有空格。
我们可以通过 read 命令来读取变量,如:
当用 read 命令读取变量时,即使字符串中有空格也不需要用引号将它们括起来。
在输出变量的内容时,使用单引号跟反斜线(\)时不进行变量的替换,使用双引号时则要进行变量的替换。
环境变量:
$HOME 当前用户的主目录
$PATH 以冒号分隔的用来搜索命令的列表
$PS1 命令提示符
$PS2 二级提示符
$IFS 输入域分隔符
$S0 shell 脚本的名字
$# 传递给 shell 脚本的参数个数
$$ shell 脚本的进程号
参数变量:
$S1,$S2,…… 脚本程序的参数
$* 在一个变量中列出所有的参数,各个参数之间用 IFS 中的第一个字符隔开
$@ 在一个变量中列出所有的参数,不受环境变量 IFS 的影响。
控制结构
1、if 语句
2、 for 语句
3、 while 语句
4、 until 语句
5、 case 语句
6、 命令列表
AND 列表:遇到假则返回。
OR 列表:遇到真则返回。
7、 函数
命令
break 、 continue、 .(true) 、eval (对参数求值)、exec(将shell 替换为另一个程序) 、 exit n 、export 、expr(对表达式求值,相当于 $( ( ) )) 、printf 、return 、set 、shift 、
trap 、unset 、find 、 grep 。要重点学习 find 和 grep 命令。