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

时间: 2024-10-11 00:00:53

Linux 复习四的相关文章

linux第四章实验报告

Linux第四章 用户和文件权限管理 实验环境 公司的linux主机即将提供给技术部作为开发服务器使用,根据部门内项目组的构成情况,首先需要建立相应的组账号.用户账号,并作为目录设置权限,还需要设置一个共用的数据存储目录,便于同事之间的数据交换. 需求描述 1.建立用户目录 创建目录/tech/benet和/tech/accp,分别用于存放各项目组中用户账号的宿主文件夹.例如,kylin用户的宿主目录应位于/tech/benet/kylin. 2.添加组账户 为两个项目组添加组账号benet,a

Linux中四种进程或线程同步互斥控制方法

原文地址:http://blog.itpub.net/10697500/viewspace-612045/ 一.Linux中 四种进程或线程同步互斥的控制方法: 1.临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问. 2.互斥量:为协调共同对一个共享资源的单独访问而设计的. 3.信号量:为控制一个具有有限数量用户资源而设计. 4.事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始. 二.临界区(Critical Section) 保证在某一时刻只有一个线程

Hibernate复习(四)常见的映射类型A

1.many-to-one 属性如下: ? name:设定待映射的持久化类的属性名. ? column: 设定和持久化类的属性对应的表的外键. ? class:设定持久化类的属性的类型. 2.set <set>元素包括以下属性: – name: 设定待映射的持久化类的属性名 – cascade: 当取值为"save-update",表示级联保存和更新. – inverse:当取值为"true",表示在双向关联中,这一端为镜像端. ? <set>

Java/JavaWeb/Linux复习笔记

学习博客 Java核心类复习 http://blog.csdn.net/tanyit/article/category/915702 Struts2 复习 http://blog.csdn.net/tanyit/article/category/657111 hibernate 复习 http://blog.csdn.net/tanyit/article/details/6987279#_Toc251597188 Spring复习 http://blog.csdn.net/tanyit/arti

linux复习笔记

最后一门考试了,善始善终. 把linux复习一下,复习内容包括 1. 鸟哥的私房菜(1,2)+高级unix环境编程  掌握核心知识点(要注意理解OS的知识与工具知识的区别) 2. 熟练度与细节,非不断练习与总结不可以 —————————————————————————————————————————————————————— --------------------------------------------------------------------------------------

Linux 第四天 vim shell

案例一:配置主机名称:Vim /etc/hostname 部署网卡配置:Rhel 5/6 网卡配置文前缀eth0 eth1RHEL 7 ifcfg-ens1 设备类型:TYPE=Ethernet地址分配模式:BOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERR

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

解答:学习Linux的四个步骤假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系统编程推荐<高级unix环境编程>,黑话叫APUE还有<unix网络编程>这时候

linux复习

linux的特点           - 免费的/开源           - 支持多线程/多用户           - 安全性好           - 对内存和文件管理优越       关机命令       shutdown -h now(立即进行关机)      shutdown -r now (现在重新启动计算机)      reboot (现在重新启动计算机)       进入桌面       startx       用户登录       登录时尽量少用root账户登录,因为它是系

Linux 复习重点目录

Linux安全复习 一.Linux基本命令 1.文件管理命令 lvm 2.用户管理命令 3.网络管理命令 4.权限管理 普通权限和特殊权限 权限命令修改 5.服务命令 6.软件安装管理命令 yum安装 prm包安装 源码包安装 7.vim .cat .more.less文件处理 8.进程管理 top.ps.计划任务.守护进程管理 9.rpm包制作(扩张) 10./目录下所有目录的用途 主要:/etc ./var . /proc./opt./home./root./usr ./dev ./bin