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第四章笔记
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行 ...
随机推荐
- urllib2.urlopen超时未设置导致程序卡死
没有设置timeout参数,结果在网络环境不好的情况下,时常出现read()方法没有任何反应的问题,程序卡死在read()方法里,搞了大半天,才找到问题,给urlopen加上timeout就ok了,设 ...
- JForum论坛添加UEditor文本编辑器
在使用JForum论坛中发现论坛自带的文本编辑器不好用,不能上传图片,样式编辑也很麻烦,就想着把这个文本编辑器替换掉,我这里选用的是百度的开源富文本编辑器UEditor 替换后的效果图 替换方法如下 ...
- XML消息解析_php
初识php——微信消息处理 <?php $test = new weixin(); $test->Message(); class weixin{ public function Mess ...
- VBScript+SCR+NetApi+Accoreconsole 批处理dwg文件
继上次powershell运行accoreconsole(https://www.cnblogs.com/NanShengBlogs/p/10981687.html)的研究之后又觉得不是很合适,毕竟p ...
- 再谈 webpack build 及 加载优化
之前项目多,事情忙,一直没时间写博客,现在空闲下来了,总结一下 之前讲过了关于 build 压缩文件的方法,有兴趣的可以看下: 点击查看 现在讲讲一个页面的首屏加载速度该如何提升 提前说明 需要 we ...
- c++编程中处理char和wchar_t的好工具
/* ttype.h sdragonx 2015-02-18 18:32:43 这个几个模版函数是为了处理ansi或unicode,使字符串值或者字符串函数能够在模版中使用 2018/7/26 23: ...
- [COCI2006-2007 Contest#3] BICIKLI
不难的一道题,就是码的时候出了点问题,看了其他巨佬的题解才发现问题所在... 题目大意: 给定一个有向图,n个点,m条边.请问,1号点到2号点有多少条路径?如果有无限多条,输出inf,如果有限,输出答 ...
- 如何使用 Idea 远程调试 Java 代码
起因 这几天,我做的项目中需要使用第三方的 API,在第三方的 API 回调时,出现各种错误,需要远程调试.之前做远程调试的时候,我只会在代码中输出日志,记录下来做分析处理,但这样做既麻烦又费时,往往 ...
- 二分图最大匹配(匈牙利算法) UVA 10080 Gopher II
题目传送门 /* 匈牙利算法:这题比UVA_670简单,注意是要被吃的鼠的最少个数,套模板 */ #include <cstdio> #include <algorithm> ...
- magento getUrl函数跳转admin模块问题
在用以下代码时,跳转后的url里面会是空的,即没有admin这个值 $this->getUrl('admin/catalog_product/edit', array('id' => $c ...