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第四章笔记
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行 ...
随机推荐
- POJ2127 Greatest Common Increasing Subsequence
POJ2127 给定两个 整数序列,求LCIS(最长公共上升子序列) dp[i][j]表示A的A[1.....i]与B[1.....j]的以B[j]为结尾的LCIS. 转移方程很简单 当A[i]!=B ...
- bzoj 1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机【bfs】
直接bfs即可,注意开double,还有驱动和终点的齿轮都在序列里,要把它们找出来= = #include<iostream> #include<cstdio> #includ ...
- [App Store Connect帮助]四、添加 App 图标、App 预览和屏幕快照(6)设置 App 预览海报帧
App 预览海报帧仅在 App 状态为可编辑时,才能被编辑. 必要职能:“帐户持有人”职能.“管理”职能.“App 管理”职能或“营销”职能.请参见职能权限. 在首页上,点按“我的 App”,选择您的 ...
- Springboot 相关注解大全
1.Spring注解 1.@Autowired 标注在方法,Spring容器创建当前对象,就会调用方法,完成赋值:方法使用的参数,自定义类型的值从ioc容器中获取自动装配; Spring利用依赖注入( ...
- P2973 [USACO10HOL]赶小猪
跟那个某省省选题(具体忘了)游走差不多... 把边搞到点上然后按套路Gauss即可 貌似有人说卡精度,$eps≤1e-13$,然而我$1e-12$也可以过... 代码: #include<cst ...
- 洛谷 P2142 高精度减法(模板)
题目描述 高精度减法 输入输出格式 输入格式: 两个整数a,b(第二个可能比第一个大) 输出格式: 结果(是负数要输出负号) 输入输出样例 输入样例#1: 2 1 输出样例#1: 1 说明 20%数据 ...
- Hdu 4738 Caocao's Bridges (连通图+桥)
题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...
- FFT学习及简单应用(一点点详细)
什么是FFT 既然打开了这篇博客,大家肯定都已经对FFT(Fast Fourier Transformation)有一点点了解了吧 FFT即为快速傅里叶变换,可以快速求卷积(当然不止这一些应用,但是我 ...
- S - Cyclic Components (并查集的理解)
Description You are given an undirected graph consisting of nn vertices and mm edges. Your task is t ...
- Spring加载applicationContext.xml实现spring容器管理的单例模式
package com.etc.pojo; import org.springframework.context.ApplicationContext; import org.springframew ...