Linux C语言程序设计(十二)——Shell编程的基础知识

1、创建脚本

Shell脚本是将一系列的Linux命令放在一个文件中执行的实用程序。Shell脚本可以利用vi等文本编辑器来编写。

Shell脚本的格式是固定的,如下:

#!/bin/bash
#注释
命令
...

        第一行中的符号“#!”用来指定解释执行该脚本文件的Shell程序。如果脚本文件中缺少该行,在执行过程中就会报错。除了第一行只为,所有“#”开头的行都是注释。如果一行未完成,可以在行尾加上"\"字符,表示与下一行合并未一行。脚本编写完毕之后,需要将脚本的属性设置为可执行,如下:

chmod +x hello.sh

执行脚本的方法为:

./hello.sh


2、一个案例

编写一个简单的脚本,输出字符串 Hello Shell,内容如下:

#!/bin/bash
# 输出Hello Shell
str="Hello Shell"
echo $str

这里的echo命令表示字符串原样输出。

执行命令,更改文件的属性,并且执行,如下:

chmod +x hello.sh
./hello.sh
Hello Shell

3、特殊字符

3.1 通配符

通配符主要用于模式匹配,常见的通配符有以下几种:

星号(*):匹配0个或者多个字符
问号(?):匹配任意的单个字符
方括号([]):匹配方括号中限定的任意一个字符,可以直接给出,也可以设定范围
感叹号(!):表示方括号中列出的字符以外的其它字符。

3.2 引号

引号分为双引号、单引号和反引号。由双引号括起来的字符,除美元符号($),反引号(')和反斜线(\)仍然保留其特殊功能外,其余字符均作为普通字符对待。

反引号括起来的字符串被Shell解释为命令行。执行时首先执行该命令行,然后以命令的输出结果替换反引号部分。

单引号括起来的都是普通字符


3.3 重定向

执行Shell命令时,系统会自动打开3个标准文件,通常对应于终端键盘的标准输入文件stdin,对应于终端屏幕的标准输出文件stdout和标准错误文件stderr。

这3个文件都可以通过重定向符进行重定向。

> 表示重定向到某一个文件 >> 表示追加到某一个文件
< 表示把命令的标准输入重定向到指定文件。

4、Shell变量

Shell是一种解释型语言,直接对一个变量进行赋值,实际上就是定义了这个变量。

例如,对变量STR进行赋值操作,不过这里有一个注意的问题,等号的两边不能有空格:

STR="Hello World!"

变量赋值之后,久可以使用$对其进行引用,例如:

echo $STR

注意:

由于Shell变量是没有类型的,所以用户可以使用同一个变量,存放不同的数据类型。在Shell中,也可以清除已经定义的变量,命令为unset:

unset STR

表示清除STR变量。


5、条件测试

条件测试是使用test命令来完成的,它常常用来计算一个条件表达式的值,经常在条件语句和循环语句中被用来判断某些条件是否满足。命令的格式通常是:

test 条件 或 [ 条件 ]

记得使用方括号的时候,两边要加上空格


5.1 字符串测试

操作符比较简单:
= 两个字符串相等
!= 两个字符串不等
-z 字符串为空
-n 字符串不为空


5.2 数值测试

-eq 两个数相等
-ne 两个数不相等
-gt 第一个数大于第二个数
-lt 第一个数小于第二个数
-le 第一个数小于等于第二个数
-ge  第一个数大于等于第二个数


5.3 逻辑操作

-a 逻辑与
-o 逻辑或
! 逻辑非

5.4 使用方式

我们使用一个数字举例说明一下:

$ NUMBER = 101
$ [ $NUMBER -eq "23" ]
$ echo $?


6、流程语句

6.1 if语句

if 条件1
then
   命令1
elif 条件2
then
   命令2
else
   命令3
fi

注意:if语句使用fi结束


6.2 case语句

if语句主要用于在两个选项之间进行选择,而case语句则根据字符串或变量的值从多个选项中进行选择,其格式为:

case 字符串 in
模式1)
	命令1
	;;
模式2)
	命令2
	;;
esac

6.3 for循环

for循环的一般格式为:

for 变量名 in [列表]
do
    命令1
    命令2
    ...
done

6.4 while循环

while 条件
do
    命令1
    命令2
    ...
done

6.5 until循环

until 条件
do
    命令1
    命令2
    ...
done

7、Shell函数

Shell 中定义函数,格式如下:

[function] 函数名()
{
	命令
}

函数也可以接受参数,在函数内部使用$1,$2等表示第一个参数,第二个参数,等等。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值