热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux脚本语言加法,2016210linux基础学习12

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

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



推荐阅读
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
author-avatar
Huibin_Yu_421
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有