您的位置:首页 > 运维架构 > Shell

shell编程基础

2018-01-27 08:59 113 查看

1. 程序的执行风格

程序编程风格:
过去式:以指令为中心,数据服务于指令。
对象式:以数据为中心,指令服务于数据。
过程式编程有以下特点:
1) 顺序执行:指程序在执行的过程中,命令会从上至下依次执行,上面的指令不成功,也会执行下面程序。
2)选择执行:指在过去式编程中,会有以下判断语句,只有满足了该条件,才会执行判断语句中的程序。
3)循环执行:指在循环语句中,也会有循环调价,在满足条件的时候,程序会一直在循环语句中循环执行。

2.编程语言分类:



3.过去式编程的linux中的基本格式:

1)第一行必须要有#!/bin/bash、#!/bin/python等解释器,在系统执行该程序的第一时间会议看开头第一行,如果没有,比如当前是在bash下,会直接用bash执行该程序,如果不是用bash的格式写的程序,会出现错误
2)版本信息
3)日期
4)创建人
5)邮箱等信息,
除了第一条,其他的信息,可有可无

4.变量

变量的命令规则:
1)不能使用程序中的保留字
2)只能使用数字、字母及下划线,数字不能开头
3)见名知义
4)统一命名规则:驼峰命名法(单词首字母大写)
几种变量的生效范围:
本地变量:生效范围为当前shell程序,对其他shell不会生效
环境变量:生效范围为当前shell程序,对其子shell也会生效
局部变量:生效范围为某段特定的代码,一般在函数中
位置变量:$1,$2..等等,1代表传过来的第一个参数,以此类推
特殊变量:$?:代表返回上一条命令的执行结果,若为0,则为真,若非0则为假。$*:代表传递给脚本所有参数,全部合为一个字符串。$@:传递给所有参数,每个参数为单独的一个字符串。$#:传递给脚本的参数个数

5.逻辑运算

与:真与真=真、真与假=假、假与真=假、假与假=假 全为真,才为真
或:真与真=真、真与假=真、假与真=真、真与假=假 全为假,才为假
非:! 取反值,如果为真,结果就是假,,若果为假,结果就为真
短路与:
第一个为假,结果必定为假,不在执行第二个程序
第一个为真,第二个需要运算,若为真才为真,若为假,结果为假
短路或:
第一个为真,则结果必定为真,不在执行第二个程序
第一个为假,则需要运算第二个程序,若为真,结果为真,若为假,结果为假
异或:异或的两个值,相同为假,不同为真

6.条件测试

判断是否满足条件:若为真,返回0。若为假,返回1
测试命令:
test 条件

[root@centos7 ~]# test 10 -eq 9 && eecho "真" || echo "假"

判断10是否等于9
[ 条件 ] 其中 " [ " 号为内部命令,必须与" ] "成对出现,中间跟判断条件

[root@centos7 ~]# [ 10 -eq 9 ]&& eecho "真" || echo "假"

[[ 条件 ]] 条件可以是正则表达式

[root@centos7 ~]# [[ "root" =~ r.*t ]] && echo "zhen" ||echo "jia"

数值比较
-gt:是否大于
-ge:是否大于等于
-eq:是否等于
-ne:是否不等于
-lt:是否小于
-le:是否小于等于
字符串比较
==:是否等于
' > ': ascii码是否大于,此处的单引号为转译为 >
<:是否小于
!=:是否不等于
=~:左侧字符串是否匹配右侧,一般右侧为扩展正则表达式
-z:是否为空,空为真,不空为假
-n:是否不为空,空为假,不空为真
文件存在性测试
-e:文件存在性测试,存在为真,否则为假
-a:同e
文件存在性及类别
-b:是否存在且为块设备文件
-c:是否存在且为字符设备文件
-d:是否存在且为目录文件
-f:是否存在且为普通文件
-h或-L:是否存在且为符号连接文件
-p:是否存在且为管道文件
-S:是否存在且为套接字文件
文件权限测试
-r:是否存在且可读
-w:是否存在且可写
-x:是否存在且可执行
文件特殊权限测试
-u:是否存在且拥有suid
-g:是否存在且拥有gid
-k:是否存在且拥有kticky
文件大小测试
-s:是否存在且为空
文件是否打开
-t:是否已经打开,且跟某个终端有关
-N:文件自上一次被读取之后是否被修改过
-O:为当前有效用户是否为文件属主
-G:当前有效用户是否为文件属组
双目测试(两个文件是否为一个)
file1 -ef file2 查看两个文件是否是一个inode号
file1 -nt file2 file1的mtime新与file2则为真,否则为假
file1 -ot file2 file1的mtime旧与file2则为真,否则为假

7.第一个hello world的shell脚本

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息