第四章 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. 8 Range 对象

    8.1 引用Range 引用Range的主要方法: Application.ActiveCell Application.Range Application.Selection Worksheet.C ...

  2. 如何在Java生态圈选择一个轻量级的RESTful框架?

    在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单元实现为微服务,可以将它们发布到一些分布式计算单元或者Docker中,并在性能需要的时候及时地创建更多的服务单元.微服务 ...

  3. python 使用.bat文件自动执行

    @echo off title demo cmd "/c activate py36 && cd demo&& python demo_test.py&quo ...

  4. jQuery:has()和jQuery:contains()及jQuery:empty

    jQuery:has()和jQuery:contains()两个方法比较类似.不同点在于: has是判断标签的 contains是判断文本的 1.jQuery:has() <div>< ...

  5. sqlserver2005连接失败,不存在或拒绝访问

    sqlserver2005连接失败,不存在或拒绝访问 启动tcp/ip连接的方法: 打开 /Microsoft SQL Server 2005/配置工具/目录下的SQL Server Configur ...

  6. P3343 [ZJOI2015]地震后的幻想乡

    传送门 给积分大佬跪了 再给状压大佬也跪了 //minamoto #include<bits/stdc++.h> #define rint register int #define ll ...

  7. ACM_闹钟人生(水题)

    闹钟人生 Time Limit: 2000/1000ms (Java/Others) Problem Description: 已知一个时钟一开始指向0点,顺时针走了n个小时,求它最终所指向的数字(时 ...

  8. svn报错:Cannot negotiate authentication mechanism

    在使用eclipse的svn插件连接osc的代码仓库时候,发生了以下错误: Cannot negotiate authentication mechanismsvn: Unable to connec ...

  9. 窗体基础WINFORM

    winform 1.窗体: 造窗体界面: 窗体设计界面: 窗体类名不能重复! 属性: acceptbutton:回车是默认点击按钮 cancelbutton:按esc按键式默认的按钮 backcolo ...

  10. 日期时间选择器插件flatpickr

    前言:在网页上需要输入时间的时候,我们可以用HTML5的inputl中的date类型.但是如下入所示,有些浏览器不支持.flatpickr这个小插件可以解决这个问题. 1.flatpickr日期时间选 ...