SHELL脚本常识.pdf
需积分: 0 106 浏览量
更新于2011-10-30
收藏 1.48MB PDF 举报
### SHELL脚本常识知识点详解
#### 一、if条件语句
在Shell脚本编程中,`if`语句是非常基础且重要的控制结构之一,用于根据不同的条件执行不同的代码块。`if`语句的基本格式如下:
```bash
if 条件表达式
then
# 当条件为真时执行以下语句
命令列表
else
# 为假时执行以下语句
命令列表
fi
```
其中,“条件表达式”可以是逻辑表达式或比较表达式。当“条件表达式”的结果为真时,执行`then`后的命令列表;若为假,则执行`else`后的命令列表。
**示例:**
```bash
if test -f "$1"
then
lpr $1
else
if test -d "$1"
then
cd $1
lpr $1
else
echo "$1 不是文件或目录"
fi
fi
```
此示例中,`test -f "$1"`检查传入的第一个参数`$1`是否为文件。如果是,则将其发送到打印机(`lpr $1`);如果不是文件,则进一步检查是否为目录(`test -d "$1"`),如果是目录,则切换到该目录(`cd $1`)并将目录名称发送到打印机;如果既不是文件也不是目录,则输出错误消息。
此外,`if`语句还可以嵌套使用,形成更复杂的逻辑结构:
```bash
if 条件表达式1
then
if 条件表达式2
then
命令列表
else
if 条件表达式3
then
命令列表
else
命令列表
fi
fi
else
命令列表
fi
```
#### 二、多重条件测试语句 `case`
`case`语句是一种用于测试字符串是否与一系列模式匹配的控制结构。其基本格式如下:
```bash
case 字串 in
模式1) 命令列表 ;;
模式2) 命令列表 ;;
...
*) 命令列表 ;;
esac
```
**示例:**
```bash
case $1 in
*.c)
cc $1
;;
*.txt)
lpr $1
;;
*)
echo "未知的类型"
;;
esac
```
在此示例中,`case`语句检查传入的第一个参数`$1`的扩展名。如果扩展名为`.c`,则使用`cc`命令编译该文件;如果扩展名为`.txt`,则使用`lpr`命令打印文件;如果`$1`没有这两种扩展名,则输出“未知的类型”。
#### 三、循环控制
##### 1. while 循环
`while`循环允许重复执行一组命令,直到某个条件不再满足。其基本格式如下:
```bash
while 条件表达式
do
命令列表
done
```
**示例:**
```bash
Sum=0
i=0
while true
do
i=$(($i + 1))
Sum=$(($Sum + $i))
if [ $i -eq 100 ]
then
break
fi
done
echo $i $Sum
```
这段代码计算从1累加到100的总和。`while true`表示无限循环,直到内部的`break`语句终止循环。每轮循环中,`i`自增1,并累加到`Sum`中,当`i`达到100时,通过`break`跳出循环。
`until`关键字的作用与`while`相反,只有当条件为假时才执行循环内的命令。例如,可以将上述示例中的`while true`替换为`until [ $i -eq 100 ]`。
##### 2. for 循环
`for`循环用于遍历列表中的元素,其基本格式如下:
```bash
for 变量 in 名字列表
do
命令列表
done
```
**示例:**
```bash
for file in *.txt
do
lpr $file
done
```
此示例中,`for`循环遍历当前目录下所有`.txt`文件,并逐个将其发送到打印机。
通过这些基础的控制结构,可以构建出复杂且灵活的Shell脚本,实现自动化任务处理和系统管理。掌握这些知识点对于深入学习Linux系统管理和Shell脚本编程至关重要。

conkang99
- 粉丝: 0
最新资源
- 基于SMIC 130nm RF工艺的高性能简易锁相环设计:20MHz输入800MHz输出,低功耗与快速锁定 · 锁相环
- 微电网分层与二次控制技术:基于事件触发的顶刊复现案例分析 微电网
- 电力电子领域MMC模块化多电平变换器在220kV400kV环境下的动稳态性能优化及调制策略 · MATLAB
- 基于COMSOL的冻土路基水热力多场耦合建模与优化方法 高效版
- 基于SpringBoot+Vue图书管理系统源码及详细文档说明(Java毕业设计)
- 基于Matlab的指纹识别库内对比系统:从归一化到结果识别的全流程解析
- 双闭环控制与最近电平逼近调制在MMC模块化多电平换流器仿真中的应用
- 卡尔曼滤波:线性统计优化算法在多领域的应用与实现 - 线性统计 宝典
- COMSOL模拟热风作用下多孔介质温湿度变化及其工程应用
- 三相车载充电机PWM整流与全桥LLC仿真模型:高效电力转换与电压调节技术 电力电子 必备版
- 电力电子技术中LLC谐振变换器变频与移相混合控制策略及仿真模型研究
- 基于Simulink仿真的800V输入三相四桥臂逆变器矢量控制设计与性能分析 · 矢量控制
- android移动开发本科期末大作业天气预报app源码高分必看
- 基于二自由度车辆动力学模型的自动驾驶横纵向控制算法研究与应用
- 基于图腾柱PFC的单相整流器Simulink仿真及220V转400V直流电稳定输出研究 v1.2
- java web 简单增删改查 jsp + mysql