Shell脚本编程基础
来源:互联网 发布:医美网络咨询招聘 编辑:程序博客网 时间:2024/06/06 01:55
一、执行Shell脚本
chomd +x xxx.sh
./xxx.sh
二、Shell中的特殊字符
Shell脚本中除了使用普通字符外,还使用一些特殊字符,下面分别进行介绍这些特殊字符。
1、通配符
通配符主要用于模式匹配,常用的通配符有如下几种:
-星号(*),匹配0个或多个字符,即以c打头的任意字符串。例如,c*可以匹配c、cc、以及cpp等。
-问号(?),匹配任意单字符。
-方括号([]),匹配方括号中限定的任意一个字符,可以直接给出,例如c[def],也可以设定范围,例如[1-9]
-感叹号(!),表示方括号中列出的字符以外的字符。
2、引号
引号分为双引号、单引号和反引号。
由双引号括起来的字符,除美元符号($)、反引号(`)和反斜线(\)仍保留其特殊功能外,其余字符均作为 普通字符对待。
反引号括起来的字符串被Shell解释为命令行。
由单引号括起来的字符都作为普通字符对待。
3、输入输出定向符
执行Shell命令时,系统会自动打开三个标准文件,通常对应于终端键盘的标准输入文件(stdin);对应于终端 屏幕的标准输出文件(stdout)和标准错误文件(stderr)。这三个文件都可以通过重定向符进行重新定向。
输入重定向符“<”的作用是把命令的标准输入重新定向到指定文件;输出重定向符“>”的作用是把命令的标准输出 重新定向到指定文件。
4、使用Shell变量
Shell是一种解释型语言,直接对一个变量进行赋值,实际上就是定义了这个变量。
例如,对变量STR进行赋值:
STR="Hello World"
注意:等号两边不能有空格。
变量赋值之后,就可以使用美元符号($)对其进行引用,例如:
echo $STR
如果对一个已经赋值的变量重新赋值,新赋的值将取代原来的值。由于Shell变量是没有类型的,所以用户可以 使用同一个变量存放字符或整数。
为了使Shell编程更为有效,系统还提供了一些特殊的变量,如下所示:
$0:脚本名称;
$#:命令行参数的个数;
$*:所有的命令行参数;
$[1-n]:第1~n个命令行参数;
$$:当前进程的标识符;
$!:后台运行的最后一个进程的标识符;
$?:命令的退出状态,0表示没有错误。
三、条件测试
条件测试使用test命令来完成,它常用来计算一个条件表达式的值,经常在条件语句和循环语句中被用来判断 某些条件是否满足。它的一般格式为:
test 条件 或 [条件]
注意:使用方括号时,要注意在条件两边加上空格。
1、字符串测试
字符串测试的主要操作符包括:
==:两个字符串相等;
!=:两个字符串不等;
-z:字符串为空;
-n:字符串不为空。
【实例1-53】下面使用-z操作符来测试变量STR是否为空,如果为非空,测试其取值是否为Hello World。
$ [ -z $STR ]
$ echo $?
0
2、数值测试
数值测试可用的操作符包括:
-eq:两个数相等;
-ne:两个数不相等;
-gt:第一个数大于第二个数;
-lt:第一个数小于第二个数;
-le:第一个数小于等于第二个数;
-ge:第一个数大于等于第二个数。
【实例1-54】下面使用-eq操作符来测试变量的值是否为某个值。
$ NUM=68 #定义Shell变量
$ [ $NUM -eq “68” ]
$ echo $?
0
3、文件状态测试
文件测试主要用来测试文件的类型以及访问权限等,操作符包括:
-f:是否为普通文件;
-d:是否为目录;
-c:是否为字符设备文件;
-b:是否为块设备文件;
-s:文件大小是否零;
-r:用户对文件是否有读权限;
-w:用户对文件是否有写权限;
-x:用户对文件是否有执行权限。
4、逻辑操作
逻辑操作包括:
-a:逻辑与;
-o:逻辑或;
!:逻辑非。
【实例1-57】下面使用-a和-r操作符来测试两个文件是否均可读。
$ [ -r file1 -a -r file2 ]
$ echo $?
0
四、Shell中的结构控制语句
1、if语句
if语句用来实现条件分支结构,它的一般格式为:
if 条件1
then
命令1
elif条件2
then
命令2
else
命令3
fi
注意:if语句以它的反写fi结尾。
如果条件1成立,则执行then后面的命令1;如果条件1不成立,但条件2成立,则执行命令2;如果两个条件都不 成立,则执行命令3。如图所示。
2、case语句
if语句主要用于在两个选项之间进行选择,而case语句则根据字符串或变量的值从多个选项中进行选择,其格式 为:
3、for循环
for循环的一般格式为:
for变量名in [列表]
do
命令1
命令2
…
done
在for循环中,使用变量名来遍历列表中所有取值,当变量值在列表中时,即执行一次所有命令。
4、while循环
while循环的一般格式为:
while 条件
do
命令1
命令2
...
done
当条件成立时,do和done之间的命令才会被执行,执行完成后重新测试条件,如果不成立则终止循环。
五、定义Shell函数
同许多高级语言类似的,Shell中也可以定义函数,这样可以提高代码的复用率。函数定义的格式如下所示:
[function] 函数名()
{
命令
}
函数可以接受参数,在函数内部使用$1、$2、以及$*等来引用,他们分别表示第一个参数、第二个参数以及参 数的列表。
【实例1-66】下面编写一个Shell脚本,从键盘上输入两个数,使用函数计算并输出他们的和。
#!/bin/bash
sun()
{
SUM='expr $1 + $2'
echo $SUM
}
echo -n "请输入两个数字:"
read X Y
echo -n "$X + $Y ="
SUM $X $Y
- Shell脚本编程基础
- Shell脚本编程基础
- Shell脚本编程基础
- shell脚本编程基础
- shell编程基础 脚本
- Shell脚本编程基础
- Shell脚本编程基础
- shell脚本编程基础
- Shell脚本编程基础
- shell脚本编程基础
- shell脚本编程基础
- SHELL脚本编程基础
- Linux shell 脚本编程基础
- Linux Shell脚本编程基础
- Linux Shell脚本编程基础
- shell脚本编程之基础
- shell脚本编程基础总结
- Linux Shell脚本编程基础
- 关于clearfix
- PHP自定义函数官方文档
- C#短信接口开发经验及具体开发实现
- The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
- StarUML 5.0问题解决:Failed to open the model file. Invalid file format.
- Shell脚本编程基础
- object类
- Objective-C Runtime 运行时之一:类与对象
- vs2013错误 C1047解决办法
- android 自定义ViewSwipeBackHelper,实现左滑结束Activity
- ScaleAnimation 动画
- 负载均衡中的session共享
- LeetCode -- Merge Two sorted lists
- php中用require、require_once、include、include_once