Linux 复习四
第四章 shell程序设计I-入门
一、shell脚本的基本概念
shell脚本(script)是一个可执行的纯文本文件,有多个shell命令组成。
命令的执行时从上而下、从左而右的分析和执行
命令、参数间的多个空白都会被忽略
空白行以及[tab]键所致的空白也会被忽略
读取到第一个[enter]符号即开始执行命令
如果脚本中需要换行则需用\[enter]转义
#是注释,任何加在#符号后的命令及文本全部被视为注释
#!用于指定本shell script使用的shell名称
shell脚本一般以.sh为后缀名
二、shell脚本的执行方法
1.直接命令行执行
必须拥有shell脚本文件的可读和可执行权限(rx)
路径要正确:a.绝对路径 /home/dmtsai/myscript.sh
b.相对路径 ./myscript.sh
c.通过变量PATH 将myscript.sh放在PATH指定的目录下
2.以bash进程执行
只要拥有shell脚本文件的可读权限(r)
# bash myscript.sh
或# sh myscript.sh
type:查看命令的类型 -t:会显示可能的三种情况:file---外部命令、alias-----命令的别名、builtin-----内置的命令功能
-a:将系统PATH定义的路径中所有含xxx名称的命令都列出来
echo、unset:变量的显示与设置
env、export:环境变量的相关操作
read:变量的输入
declare/typeset:数组与声明
三、脚本中变量的使用
1.变量的显示与设置
使用echo命令显示变量的值:
# echo $变量名
# echo ${变量名}
设置变量:# 变量名=变量值
取消变量:# unset 变量名
2.环境变量功能
env:查看环境变量
set:查看所有变量:包括环境变量和自定义变量(主要区别:作用域不用)
环境变量在整个bash运行过程中有效,自定义变量只在当前进程中有效
export:将自定义变量转化为环境变量
# export 变量名
3.从键盘读取变量值
read:从键盘读取变量值,和用户交互,在shell script中经常使用
# read [-pt] 变量名 -p:后面接提示语句
-t:后面接等待的秒数
4.声明变量类型
使用declare或typeset能声明变量的类型
# declare [-aixr] 变量名 -i:声明为整型
-x:声明为环境变量
四、数据流重定向和管道
1.数据流重定向
标准输入(stdin):代码为0,符号为<或<<
标准输出(stdout):代码为1,符号为>或>>
标准错误输出(stderr):代码为2,符号为2>或2>>
将数据从指定的流输入或输出,就称为数据重定向
标准输出流stdout默认情况下将数据输出到device
使用>将数据输出重定向到文件
>默认为覆盖文件内容,如果要追加则用>>
2>:已覆盖的方式将错误信息输出到指定文件或设备上
/dev/null:将错误信息忽略,及输出到黑洞
<:标准输入流默认从键盘输入
<<:用于设定结束输入的关键字
2.管道
管道命令的界定符号为“|”
管道命令仅会处理stdout,对stderr会忽略
管道命令必须要能够接收来自前一个命令的数据作为stdin
选取命令cut、grep
cut:将同一行的数据进行分解 -d:后面接分隔字符,与-f一起使用
-c:以字符的单位取出固定字符区间
-f:依据-d将一段信息分隔,-f指定取哪一段
cut是从一行中取出部分信息,grep是按条件取出某行
排序命令:sort、wc、uniq
sort:用于对输入内容进行排序
uniq:用于取出结果中的重复行
wc:用于统计字、字符、行 -l:仅列出行
3.双向重定向
tee:能将数据流同时输出到文件与屏幕 -a:以追加的方式将内容输出到文件
printf:文件的格式化输出命令
第五章 shell程序设计II-进阶
一、shell脚本的经典案例
二、结构化控制语句的使用
if-then语句
1.if [表达式]; then
语句
fi
2.if [表达式]; then
语句
else
语句
fi
3.if [表达式]; then
语句
elif
语句
else
语句
fi
case。。。esac语句
1.case $变量名 in
“变量值”)
语句
;;
“变量值”)
语句
;;
*)
语句
;;
esac
while循环
1.while [ 条件表达式 ]
do
语句
done
2.until [ 条件表达式 ]
do
语句
done
for循环
1.for 变量名 in value1 value2 value3
do
语句
done
2.for ((初始值;终止条件;执行步长))
do
语句
done
三、函数的使用
function 函数名()
{
程序段
}
#调用函数语法为:
函数名
四、脚本的调试
sh:支持对脚本的语法检查和调试
# sh [-nvx] scripts.sh
Linux 复习四的更多相关文章
- Linux下四款常见远程工具比较
摘要:Linux远程可不像Windows下那么方便,主要是连接的速度.显示的画质不能令人满意(延迟.撕裂).本文只是说一下我用过的四款远程工具.Anydesk官网:https://anydesk.co ...
- 学习linux/unix编程方法的建议,学习Linux的四个步骤(转)
解答:学习Linux的四个步骤假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux ...
- linux复习
linux的特点 - 免费的/开源 - 支持多线程/多用户 - 安全性好 - 对内存和文件管理优越 关机命令 ...
- Linux 复习重点目录
Linux安全复习 一.Linux基本命令 1.文件管理命令 lvm 2.用户管理命令 3.网络管理命令 4.权限管理 普通权限和特殊权限 权限命令修改 5.服务命令 6.软件安装管理命令 yum安装 ...
- Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...
- Linux第四次学习笔记
程序的机器级表示 寻址方式的演变 DOS → 8086 → IA32 Inter处理器系列俗称x86,其演变过程(根据其所需要的晶体管数量来说明): 8086 → 80286 → i386 → i48 ...
- linux第四次读书笔记
第四章:进程调度 一.多任务 1.非抢占式多任务 进程会一直执行直到自己主动停止运行(这一步骤称为让步) 2.抢占式多任务 Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占.进 ...
- 【实践报告】Linux实践四
Linux内核分析 实践四——ELF文件格式分析 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文 ...
- linux第四章笔记
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行 ...
随机推荐
- bzoj1999 (洛谷1099) 树网的核——dfs
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1999 https://www.luogu.org/problemnew/show/P109 ...
- P1606 [USACO07FEB]荷叶塘Lilypad Pond(最短路计数)
P1606 [USACO07FEB]荷叶塘Lilypad Pond 题目描述 FJ has installed a beautiful pond for his cows' aesthetic enj ...
- 洛谷 P1233 木棍加工
题目描述 一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的.棍子可以被一台机器一个接一个地加工.机器处理一根棍子之前需要准备时间.准备时间是这样定义的: 第一根棍子的准备时间为1分钟: 如果刚处理 ...
- http2及server push
本文主要研究下java9+springboot2+undertow2启用http2及server push maven <parent> <groupId>org.spri ...
- JavaScript--DOM方法
getElementsByName()方法 返回带有指定名称的节点对象的集合. 语法: document.getElementsByName(name) 与getElementById() 方法不同的 ...
- [转]深入C语言内存区域分配(进程的各个段)详解
一般情况下,一个可执行二进制程序(更确切的说,在Linux操作系统下为一个进程单元,在UC/OSII中被称为任务)在存储(没有调入到内存运行)时拥有3个部分,分别是代码段(text).数据段(data ...
- HDU 4135 容斥原理
思路: 直接容斥 //By SiriusRen #include <cstdio> using namespace std; #define int long long ; int cas ...
- SqlServer数据库(可疑)解决办法
-- 当数据库发生这种操作故障时,可以按如下操作步骤可解决此方法,打开数据库里的Sql 查询编辑器窗口,运行以下的命令. --1.修改数据库为紧急模式 ALTER DATABASE Zhangxing ...
- Spring.Net学习笔记(6)-方法注入
一.开发环境 系统:win10 编译器:VS2013 二.涉及程序集 Spring.Core.dll 1.3.1 Common.Logging.dll 三.开发过程 1.项目结构 2.编写Mobile ...
- Spring.Net学习笔记(3)-创建对象
一.开发环境 编译器:VS2013 .Net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll:1.3 Common.Logging 三.开发过程 1.项目结构 ...