第四章 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. Code First:Data Anotation (2)

    示例一 本例演示与索引有关的内容,模型: using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAn ...

  2. SQLAlchemy框架---ORM思想

  3. bzoj3786

    splay维护dfs序 我们发现有移动子树这种操作,树剖是做不了了,又要实现子树加,lct又维护不了了,这时我们用splay维护入栈出栈序来支持这些操作.我们记录每个点的入栈时间和出栈时间,这样一个闭 ...

  4. bzoj 1925: [Sdoi2010]地精部落【dp】

    设[f[i][j]为1到i,开头数字是j并且是山峰的方案数 注意到当数字j和j-1不相邻时,交换它们会得到一个新的符合要求的序列,所以f[i][j]+=f[i][j-1]; 如果相邻,那么j是山峰,j ...

  5. 使用frp工具实现内网的穿透以及配置多个ssh和web服务

    frp简介 FRP 项目地址 https://github.com/fatedier/frp/blob/master/README_zh.md frp 是一个可用于内网穿透的高性能的反向代理应用,支持 ...

  6. ASP.NET SQL 总结(2)

    Sql常见面试题(总结) 1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name   kecheng   fenshu 张三     语文       81 张三     数学       ...

  7. Agar.io 简单但是有趣的网页游戏

    攻略,进阶 上榜第一次 (有点水,九百多分)  上榜第二次 (完成四杀,逆袭上榜) 上榜第三次 (忘写名字,自己补上) 上榜第四次 (人生巅峰!) 上榜第五次 (踩了狗屎运,上榜这么容易了?收了一个小 ...

  8. Deepfakes教程及各个换脸软件下载

    源:https://blog.csdn.net/koest/article/details/80720078 Deepfakes目前用于深度换脸的程序基本都是用python编程语言基于tensorfl ...

  9. C# 自动批量导入图片到数据库中

    using Model; using System; using System.Collections.Generic; using System.Data; using System.Data.Sq ...

  10. Git命令add和commit的区别

    要想弄明白git add和git commit的区别,首先我们需要知道三个概念:工作区(Working Directory).版本库(Repository).暂存区(Stage or index). ...