第四章 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 复习四的更多相关文章

  1. Linux下四款常见远程工具比较

    摘要:Linux远程可不像Windows下那么方便,主要是连接的速度.显示的画质不能令人满意(延迟.撕裂).本文只是说一下我用过的四款远程工具.Anydesk官网:https://anydesk.co ...

  2. 学习linux/unix编程方法的建议,学习Linux的四个步骤(转)

    解答:学习Linux的四个步骤假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux ...

  3. linux复习

    linux的特点           - 免费的/开源           - 支持多线程/多用户           - 安全性好           - 对内存和文件管理优越       关机命令 ...

  4. Linux 复习重点目录

    Linux安全复习 一.Linux基本命令 1.文件管理命令 lvm 2.用户管理命令 3.网络管理命令 4.权限管理 普通权限和特殊权限 权限命令修改 5.服务命令 6.软件安装管理命令 yum安装 ...

  5. Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

    一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...

  6. Linux第四次学习笔记

    程序的机器级表示 寻址方式的演变 DOS → 8086 → IA32 Inter处理器系列俗称x86,其演变过程(根据其所需要的晶体管数量来说明): 8086 → 80286 → i386 → i48 ...

  7. linux第四次读书笔记

    第四章:进程调度 一.多任务 1.非抢占式多任务 进程会一直执行直到自己主动停止运行(这一步骤称为让步) 2.抢占式多任务 Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占.进 ...

  8. 【实践报告】Linux实践四

    Linux内核分析 实践四——ELF文件格式分析 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文件用于存储Linux程序.ELF文 ...

  9. linux第四章笔记

    第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行 ...

随机推荐

  1. 利用Oracle内置分析函数进行高效统计汇总

      分析函数是Oracle从8.1.6开始引入的一个新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现 ...

  2. echart x轴 type

    x轴类型有三种(y轴类似) 1 category 类目轴,适用于离散的类目数据 ,就是x周的类别是自定义的,都是字符串,需要通过data设置类目数据 与series 中data对应,data是一维数组 ...

  3. bzoj2558

    哈希+拓扑排序 题意比较绕,先开始没看懂就看了发程序,发现好像理解的不太一样,后来找到了一个题目解释... 摘自jcvb:其实就是说颜色相同且三个出口分别对应相同(注意有可能是合并后才相同)两个结点是 ...

  4. mysql数据库中的十进位是什么意思?

    一般在用小数的时候才有用,比如类型你设置了double,十进位你设为2,那么你可以放0.22的值,但是放0.222的值它会自动四舍五入为0.22,相当于小数位数吧

  5. zabbix详细介绍及其自动动态发现

    zabbix3.2.1 第1章 安装 1.1 查看系统环境 [root@centos7-2 ~]# [root@centos7-2 ~]# hostname -I 10.0.0.10 172.16.1 ...

  6. daily_journal_3 the game of thrones

    昨晚追完了最爱的美剧(the game of thrones),哇,看到结局有点崩溃.果然还是美帝淫民开放,各种乱伦,在七夕收到的万点暴击就祝天下有情人就像剧中一样终是血亲. 昨天算是完成了git的复 ...

  7. 简单几何(水)BestCoder Round #50 (div.2) 1002 Run

    题目传送门 /* 好吧,我不是地球人,这题只要判断正方形就行了,正三角形和正五边形和正六边形都不可能(点是整数). 但是,如果不是整数,那么该怎么做呢?是否就此开启计算几何专题了呢 */ /***** ...

  8. 记一次java应用cpu利用率过高调试经历

    1,现象 写的一个storm应用,主要是通过mysql的binlog来同步表到hbase.运行一段时间后发现,经常会出现cpu使用率飙升到200%以上,然后各种消息堆积报警等等出现各种问题 2,调研过 ...

  9. 2017-12-01HTML块及引用

    HTML块1.HTML块元素 快元素在显示时,通常会以新行开始 例如:<h1>.<p>.<ul>2.HTML内联元素 内联元素通常不会以新行开始 例如:<b& ...

  10. Activity随笔

    Activity的生命周期 1.正常情况下的生命周期 onCreate:  Activity正在被创建,生命周期中的第一个方法,常在此方法中做一些初始化工作,比如调用setContentView方法, ...