1、字符测试

常用的测试字符的命令:

== 、=都表示测试字符相等,格式为【 A = B 】需要注意的是变量与等号之间需要有空格,不然测试的结果不正确示例如下

若字符与等号不加空格,假设变量A=ab  B=cd,  比较A B的值是否相等,使用echo $?  查看命令状态,因为A不等于B 所以命令返回状态应该为1

!=:”表示测试字符是否等于

> 判断字符是否大于

<判断字符是否小于

此外  -n +字符串表示测试指定字符串是否为空,-s + 字符串表示测试字符串是否为不空

for循环以及练习

for循环用法:

for 变量 in 列表;do(若do在下一行前面可不加分号)

循环体(要执行的命令)

done

如何生成列表呢,方法有两种。

1、使用花括号例如 {1..100}  表示自动展开从1到100

2、使用命令替换 类似于`seq 10`  表示为从1循环到10,

seq命令格式:  seq  起始数(可以忽略)步进长数(可以忽略)结束数示例如下,需要注意的是seq有设置步进长数的时候,有时候并不会匹配最后一位。

练习for循环:编写一个脚本,依次向每一个用户的前面加hello问好,最后统计共有多少个用户。

脚本如下: 定义变量总共有多少个用户:  declare -i  LINES=` wc -l  /etc/passwd  | cut -d' ' -f1`   此处在做实验时-d后面分隔符为空格,未选择空格为分隔符,导致报错

使用for循环:   for I in `seq 1 $LINES` ;do

echo"hello, `head -n $I  /etc/passwd | tail -1 | cut  -d: -f1` "     使用head命令取得前n行的用户,tail -1取得每一次循环最后一个 用户

done

echo "  there have  $I user "

实验结果如下图:

练习2 : 批量添加10个用户,user1到user10并且密码同用户名,当用户已经存在时不添加。

脚本如下:  for  I  in {1..10};do

if  id  user$I ; then

echo " user$I  already existed"

else

useradd user$I  &> /dev/null

echo "user$I"  |     passwd --stdin   user$I &> /dev/null

echo" user$I add success"

fi

done

下图是用户已经存在:

同理利用for循环,也可以批量删除用户,下图为删除用户后,添加的用户。

使用 cat  /etc/passwd 看到新添加的用户。cat

练习三: 批量添加10个用户,当接受到addd参数时,批量添加10个用户,当接收到dell 参数时批量删除用户,如果用户已经存在则不添加,如果用户不存在则不删除。

脚本截图如下:

批量添加用户:

使用 cat  /etc/passwd 验证是否添加用户

批量删除用户:

linux字符测试以及for循环的更多相关文章

  1. linux基础11-bash编程(字符串测试 和 for循环)

    练习:传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来.(1)字符测试:==:测试是否相等,相等为真,不等为假!=: 测试是否不等,不等为真,等为假>< ...

  2. 归纳整理Linux下C语言常用的库函数----字符串转换、字符测试、及内存控制

    在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. ...

  3. 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍

    两款[linux字符界面下]显示[菜单],[选项]的powershell脚本模块介绍 powershell linux  ps1 menu choice Multiselect 传教士 菜单 powe ...

  4. Linux字符设备驱动实现

    Linux字符设备驱动实现 要求 编写一个字符设备驱动,并利用对字符设备的同步操作,设计实现一个聊天程序.可以有一个读,一个写进程共享该字符设备,进行聊天:也可以由多个读和多个写进程共享该字符设备,进 ...

  5. Linux字符设备简单示例

    1. Linux字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现open.close.read和write系统调用.例如:串口.Led.按键等. 2. 通过字符设备文件 ...

  6. 6-3 bash脚本编程之五 字符串测试及for循环

    1. 字符测试 ==:等号两边要有空格,否则会被认为是赋值. !=:  测试是否相等,记住如果不等为真,等为假. -n string: 测试指定字符串是否为空,空位真,不空为假. -s string: ...

  7. Kali linux渗透测试常用工具汇总1

    1.ProxyChains 简介:代理工具.支持HTTP/SOCKS4/SOCK5的代理服务器,允许TCP/DNS通过代理隧道. 应用场景:通过代理服务器上网. 配置:/etc/proxychains ...

  8. 深入理解Linux字符设备驱动

    文章从上层应用访问字符设备驱动开始,一步步地深入分析Linux字符设备的软件层次.组成框架和交互.如何编写驱动.设备文件的创建和mdev原理,对Linux字符设备驱动有全面的讲解.本文整合之前发表的& ...

  9. Linux字符设备驱动结构(一)--cdev结构体、设备号相关知识机械【转】

    本文转载自:http://blog.csdn.net/zqixiao_09/article/details/50839042 一.字符设备基础知识 1.设备驱动分类 linux系统将设备分为3类:字符 ...

随机推荐

  1. C# Conversion Keywords

    主要是解决类与其他不同数据类型的转换 类于类的显式转换: explicit  public static explicit operator B(A a) { return new B(){a.... ...

  2. golang 读书笔记

    介绍 Go语言是一种让代码分享更容易的编程语言.Go语言自带一些工具,让使用别人写的包更容易,并且分享自己写的包更容易. Go语言对并发的支持是这门语言最重要的特性之一.goroutine很像线程,但 ...

  3. urllib-Proxy

    代理的使用: 首先,当我们正确爬取一个网页时,发现代码没有错误,可就是不能爬取网站.原因是有些网站设置了反爬取手段,就是知道你就是用python代码爬取该网站,设置了屏蔽.如果我们又想爬取该网站,便要 ...

  4. 大数据学习之HDFS基本命令操作05

    1)hdfs的客户端 1.网页形式->测试用 http://192.168.40.11:50070/dfshealth.html#tab-overview 2.命令行形式->测试用 3.企 ...

  5. 蓝桥杯 穿越雷区(bfs)

    题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废.某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短? ...

  6. Dalvik和ART

    --摘自<Android进阶解密> DVM和ART都是在Zygote进程中诞生的 *DVM和JVM的区别* 1.基于的架构不同 DVM是基于寄存器的,它没有基于栈的虚拟机在复制数据时而使用 ...

  7. pythonpipinstallpymongo报错

    1.安装pymongo模块,报错pip版本低,升级版本又报错找不到合适的版本,网友说网络问题,要使用国内的镜像源来加速:pip install pymongo -i http://pypi.douba ...

  8. Markdown初使用

    Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式. 相比WYSIWYG编辑器 优点:1.因为是纯文本,所以只要支持Markdown的地方都能获得一样的 ...

  9. AT与ATX电源 - 1 系统状态

    ATX与AT电源比较 ATX电源普遍应用在PC中,它有两套电源,一个是正常操作使用:12V,5V,3.3V和-12V,还有一个独立的5V待机电源,所谓的待机电源就是其ON的充要条件是AC输入存在,而正 ...

  10. 3A

    # -*- coding: utf-8 -*- import datetime, time, heapq, cx_Oracle #2rd sheet def get_5mins_3A_LOG(): c ...