C语言学习(四)shell脚本
Linux系统中的Shell种类众多,常见的有bash、csh以及ksh等。不同的Shell语法有所不同,不能互换使用,但每种Shell都有其特色之处。这里我们选择bash来讲述Shell脚本编程的基础知识。Shell命令可以事先写在一个文件中,使用时Shell读取文件中的命令逐条解释,这种文件被称为脚本。
1.编写一个Shell脚本
编写一个简单的Shell脚本,输出字符串Hello Word。
hello.sh注意:echo命令的功能是在屏幕上显示一段文字,后面的字符串可以加引号,也可以不加引号。如果加引号,将字符串原样输出;如果不加引号,将字符串中的各个单词用一个空格来分割。
脚本文件编辑完成之后,将其保存为test.sh。在执行脚本之前,需要将其属性改为可执行的,如下所示:
chmod +x test.sh
执行脚本的方法为:./test.sh
Shell脚本就是将一系列的Linux命令放在一个文件中执行的实用程序。Shell脚本可以利用vim等文本编辑器来编写。Shell脚本的格式是固定的,如下所示:
#!/bin/bash #指定解释执行该脚本文件的Shell程序
# 注释
命令…
注:一行未完成,可以在行尾加上“\”字符,表示与下一行合并为一行。
2.特殊字符
引号分为双引号、单引号和反引号。
1、由双引括起来的字符,除$、`(反引号)和\保留其特殊功能外,其余全为普通字符号
例如:
(1)$用于变量的引用;
变量的定义引用和清除:
STR=“Hello world” #对变量STR进行赋值
echo $STR或echo ${STR} #用$对其进行引用
unset STR #清除STR变量
(2)echo“现在的地址是`pwd`”,输出结果为:现在的地址是/root(`pwd`被解释为命令);
(3)\为转义字符,使用-e进行解析,如:echo -e "a\nd" // \n自动换行
另外,在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。
2、单引号内部不能使用$、`(反引号)和\,都作为普通字符对待。
3.常用脚本命令
echo ${#STR} #计算长度(字母个数)
echo ${STR:1:3} #显示第2,3,4个字符
echo “`expr index “$STR” 23`” #在变量STR中23 谁先出现 显示谁位置
数组:
array1=(0 1 2 3 4) #3种定义赋值数组(圆括号)
echo ${array1[0]} #显示数组值
echo ${#array1[@]}或echo ${#array1[*]} #计算数组长度
算数运算:
c=`expr $a + $b` #.sh中的加减乘除
c=`expr $a \* $b` #.sh中的乘法
4.数值测试
数值测试可用的操作符包括:
-eq:两个数相等;(=)
-ne:两个数不相等;(!=)
-gt:第一个数大于第二个数;(>)
-lt:第一个数小于第二个数;(<)
-le:第一个数小于等于第二个数;(<=)
-ge:第一个数大于等于第二个数。(>=)
5.字符串测试
字符串测试的主要操作符包括:
==:两个字符串相等;
!=:两个字符串不等;
-z:字符串为空;
-n:字符串不为空。
6.结构控制语句
if语句用来实现条件分支结构,它的一般格式为:
if 条件1
then
命令1
elif条件2
then
命令2
else
命令3
fi
注意:if语句以它的反写fi结尾。如果条件1成立,则执行then后面的命令1;如果条件1不成立,但条件2成立,则执行命令2;如果两个条件都不成立,则执行命令3。
for循环的一般格式为:
for变量名in [列表]
do
命令1 命令2 …
done
在for循环中,使用变量名来遍历列表中所有取值,当变量值在列表中时,即执行一次所有命令。for循环的程序流程
while循环的一般格式为:
while 条件
do
命令1 命令2 ...
done
当条件成立时,do和done之间的命令才会被执行,执行完成后重新测试条件,如果不成立则终止循环。while循环的程序流程