linux 脚本语言加法,2016-2-10 linux基础学习12

shell编程

编译器,解释器

静态语言:编译器语言(强类型变量),事先转换成可执行格式,甚至还需初始化

C, C++, JAVA, C#

动态语言:解释型语言(弱类型变量),边解释变执行,甚至不区分类型

PHP, SHELL, python, perl

面向过程:Shell, C

面向对象:JAVA, Python, perl, C++

与:只要有一个为假,结果一定为假

或:只要有一个为真,结果一定为真

bash变量类型:

环境变量

本地变量

位置变量

特殊变量

本地变量:

VARNAME=VALUE:作用域为整个bash进程

局部变量:

local VARNAME=VALUE:作用域为当前代码段

环境变量:作用域为当前shell进程及其子进程:

export VARNAME=VALUE

VARNAME=VALUE

export VARNAME

"导出"

7502e69d125adc8a5ffcbb5632aa83b3.png

afa4c7d6799d548d3cd87e4e6f785487.png

位置变量:

$1, $2, ……

特殊变量:

$? : 上一个命令的执行状态返回值

程序执行,有两类返回值

程序执行结果

程序转态返回代码(0-255)

0:正确执行

1-255:错误执行  1,2,127系统预留

撤销变量:

unset VARNAME

变量名称要求

1、只能包含字母,数字,下划线,并且不能以数字开头

2、不应该跟系统中已有的环境变量重名

3、最后做到见名知意

查看当前shell变量

set

查看当前shell中的环境变量

printenv

env

export

/dev/null:软件设备 bit bucket数据黑洞

脚本在执行时会启动一个子shell进程

命令行中启动的脚步会继承当前shell环境变量

系统自启动执行的脚步(非命令行启动)就需要自我定义需要各环境变量

脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序

shebang:魔数

脚本第一行:#!bin/bash

#注释行,不执行

02170beb82ec89e527bf82ba3d1c63c9.png

12a12edca448ff418eda3fc1c0c3741a.png

运行脚本

法一

1,编写脚本

2,加权限(独立执行必须加权限)

3,当前路径加到环境变量中去,或在当前路径下执行

法二:

1,编写脚本

2,在解释器下解释脚本,当做bash的参数

ccb78e7ff67652292352377a1c2ebd49.png

ab1e60e9cac31590ce2b37350d25c1e2.png

b6ce42d5c05cfb73f854e1228497f213.png

87df1fac55a5eb0f09657fba79e98566.png

条件判断:

如果用户不存在

添加用户,给密码并显示添加成功

否则

不添加

bash中如何实现添加判断?

条件测试类型:

整数测试

字符测试

文件测试

条件测试的表达式:

[ expression ]

` expression `

test expression

整数比较:

-eq:测试两个整数是否相等;比如$A -eq $B

-ne:测试两个整数是否不等,不等为真,否则为假

-gt:测试一个数是否大于另一个数:大于为真,否则为假

-lt:测试一个数是否小于另一个数:小于为真,否则为假

-ge:大于或等于

-le:小于或等于

命令间的逻辑关系:

逻辑与: &&(只要有一个为假,结果一定为假)

第一个条件为假,第二个就不必执行

第一个条件为真,就要执行第二个

逻辑或:||(只要有一个为真,结果一定为真)

第一个条件为真,第二个就不必执行

第一个条件为假,就要执行第二个

课堂1、如果/etc/inittab文件的行数大于100,就显示有几行的文件

wc -l /etc/inittab |

be2ab18f4924e62b65c3915e929cb4e3.png

69152a1a27dce4a5704518e11db1a5dc.png

0aa65e139c9bd46dded5429aaa595dba.png

24c0ee535227038e0d266315abfd45e8.png

3ab5ff8142d0dc24c3324bd98d78868b.png

64c51a0266c63274120d94673d61b9d8.png

48ad8ebdadd86a9a6b24de94445dfdd3.png

课堂2、如果用户存在,就显示用户已经存在,否则,就添加此用户

! id user1 && echo "user1 exists." || useradd user1

课堂3、如果用户不存在,就添加,否则,显示其已存在

! id user1 && useradd user1 || echo "user1 is "

课堂4、如果用户不存在,添加并且给密码,否则,显示其已经存在

! id user1 && useradd user1 && echo “user1” | passwd --stdin user1 || echo "user1 is"

01d67e9e1b33dc89d732df11cb17237a.png

09a6fcc6f67166b23ec8eb901952ab4f.png

5-3练习

1、写一个脚本,完成以下任务:

(1)使用一个变量保存一个用户名

(2)删除此变量中的用户,且一并删除其家目录

(3)显示“用户删除完成”类信息

78c331e7638ad79dc5483f4b644d3531.png

8dac1166d5eec57eb96febd981ecb8c6.png

2、写一个脚本,完成以下要求:

(1)添加3个用户user1,uuser2,user3,但要先判断用户是否存在,不存在而后再添加

(2)添加完成后,显示一共添加了几个用户,当然,不能包括事先存在而没有添加的

(3)最后显示当前系统上共有多少个用户

9de4ef5d2fbbe0f01906e233ba9e779a.png

2abe69c5ab91f8c6b9f2e0988dfefe38.png

efc5d817073de67d5a95cd54c6f30f8c.png

3、写一个脚本,完成以下要求:

(1)给定一共用户,如果其UID为0,就显示此为管理员

(2)否则,就显示为普通用户

53ba84ad76a35c9f7fec3129e30401ee.png

ea8d4d3da8da249c8e454c28f9ff3e30.png

c2766e483c2435496a8e544c2b40fe5d.png

cce590d9b96e0e591cf44dea9f944835.png

条件判断,控制结构:

单分支if语句

if 判断条件,then

statement1

statement2

...

fi

双分支的if语句

if 判断条件,then

statement1

statement2

...

else

statement4

statement5

...

fi

0618a992d639a4af2f99df40b3798006.png

3e1a9730f10f8bf191ed5abb2c339fe3.png

f2aadb998982608aad2a656876f812e1.png

2530f26f48d6aa25498efd90529e049b.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值