shell编程规范与变量

Posted 呼噜呼噜懒洋洋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程规范与变量相关的知识,希望对你有一定的参考价值。

shell 脚本概述

Shell脚本的概念  

Shel1是一个面向字符串的编程语言,可以跟Python之类的其他语言配合起来,比如某个复杂的功能使用一个python脚本来实现。   

然后在shell中调用这个脚本实现较复杂的功能, 或者反过来,在Python脚本中调用外部的Shell脚本来提高自动化的效率,也是可以的。

脚本性语言)弱类型语言;
就是将命令按顺序一一列出, 最后自动执行
执行需要权限,也可以直接使用绝对路径
脚本其实不复杂,通用脚本环境改变后依然可以使用的脚本

Shell脚本应用场景

重复性操作
交互性任务(自动化运维)
批量事务处理
服务运行状态监控
定时任务执行

Shell的作用----命令解释器, “翻译官”

介于系统内核与用户之间,负责解释命令行:
接受用户输入的操作指令,并进行解释,将需要执行的操作传递给内核执行,并输出执行结果

shell编程规范与变量_编程规范

linux中常见的shellshell编程规范与变量_变量_02

登录后默认使用的Shell程序,一般为/bin/bash
不同Shell的内部指令、运行环境等会有所区别
用户常用shell:
***检查一下/etc/shells这 个文件,里面就是Linux所包含的Shell。
最常用的就是bash、tcsh、 csh、sh、 nologin这些shell。
这些shell都是依据Linux发展者的不同所创造出的不同版本。
Linux发展者的不同所创造出的不同版本。
bash:基准于GNU的框架下发展出的Shell。
csh:语法有点类似于c语言的Shell。
tcsh:整合了csh,提供更多的功能。.
sh:已经被bash所替换。
nologin:奇怪的shell, 这个shel1可以让用户无法登录主机。

注: bash (/bin/bash)是目前大多数Linux 版本采用的默认Shell.

思考1:为什么系统上合法的Shell要写入/etc/shells这个文件呢?

 答:这是因为系统某些服务运行过程中,会去检查用户能够使用的Shell,而这些shell的查询就是借由/etc/shells这个文件。

思考2:用户什么时候可以取得shell来工作?用户默认会取得哪一个shell?

当用户登录的时候,系统就会给我一个shell让我来用, 而这个登录取得的Shell就记录在/etc/passwd这个文件内。

shell脚本的作用

自动化运维
批量化重复操作可以编写脚本结合计划任务自动周期运行
减轻管理员工作量
提高处理文本文件的速度
避免配置出错

shell脚本的构成

1.脚本申明(解释器) :第一行开头“#!/bin/bash",
表示此行以下的代码语句是通过/bin/bash程序来解释执行。
#!/bin/bash为默认的解释器还有其他类型的解释器;
例如:#!/bin/python、#!/bin/expect
2.注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行;
3.可执行语句:比如echo命令,用于输出“ ”之间的字符串

示例:

vim /root/first.sh

#!/bin/bash
# This is my first Shell-Script.
cd /boot
echo "当前的目录位于:"
pwd
echo "其中以 vml 开头的文件包括:"
ls -lh vml*

shell编程规范与变量_变量_03

shell编程规范与变量_重定向_04

脚本执行逻辑及执行方式

脚本执行逻辑

顺序执行:程序按从上到下顺序执行
选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
循环执行:程序执行过程中需要重复执行多次某段语句

脚本执行方法

方法一:指定路径去执行文件(文件本身需要有执行权限)  

[root@localhost ~]# chmod +x /root/frist.sh   #加权限  bash环境变量
指定相对路径 ./host.shfrist
指定绝对路径 /root/host.sh

shell编程规范与变量_重定向_05

方法二:指定Shell来解释脚本,不要求文件必须有x权限。

sh/bash 指定某个shell来解释脚本语句  
例:sh yum.sh、bash yum.sh(使用指定shell执行脚本使用的是脚本中shell环境)
source 通过内部命令加载文件中的源代码 也可以通过“.”来执行
例:Source yum.sh . yum.sh
(source .执行脚本使用的是当前用户所使用的脚本)

shell编程规范与变量_小数整数变量计算_06

重定向与管道操作

管道操作

管道操作作用:管道操作作为不同命令之间的协同工作提供了一种机制;
解释:位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入对象,
且一条命令可以使用多个“|”。
例:cat /etc/passwd | grep "/bin/bash$" | awk -F: print $1,$7

shell编程规范与变量_小数整数变量计算_07

重定向

交互式硬件设备

标准输入:从该设备接收用户输入的数据;
标准输出:通过该设备向用户输出数据;
标准错误输出:通过该设备报告执行出错信息;

类型

设备文件

文件描述编号

默认设备

标准输入

/dev/stdin

0

键盘    /dev/pts0

标准输出

/dev/stdout

1

显示器 /dev/pts1

标准错误输出

/dev/stderr

2

显示器 /dev/pts2

重定向操作

类型

操作符

用途

重定向输入

<

从指定的文件读取数据,而不是从键盘输入

重定向输出

>

将输出结果保存到指定的文件(覆盖原有内容)

>>

将输出结果追加到指定的文件尾部  (没有文件可以自动创建文件,不能创建目录)

标准错误输出

2>

将错误信息保存到指定的文件(覆盖原有内容)

2>>

 将错误信息追加到指定的文件中

混合

输出

&>

将标准输出、标准错误的内容保存到同一个文件中

>...2>&1

将标准错误输出重定向到标准输出

示例1:
echo "123456" > pass.txt
passwd --stdin zhangsan < pass.txt
#从pass.txt文件中取mima,需要注意 SELinux 会影响此命令执行,
若执行失败可尝试关闭SELinux 即setenforce 0
示例1:
ls -lh > shell编程规范与变量

shell脚本——shell编程规范与变量

Shell编程规范与变量

Shell编程规范与变量

Shell编程规范与变量

理论+实操 :shell编程规范与变量————理论讲解,新手必看