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. [3]第二章 C++编程简介

    (本资料均从 internet 上进行收录整理,若要转载,请与原作者联系) 2.1  机器语言.汇编语言和高级语言 程序员用各种编程语言编写指令,有些是计算机直接理解的,有些则需要中间翻译(tranl ...

  2. Linux-网络基础

    1.如何将俩台不同网络中的电脑通信,见下图

  3. OI退役

    OI退役 by war 其实初中时就想自学编程,但是这个愿望并没有很强烈,加上中考的压力就没有实践.在中考前夕看到的现在的机房,哇,计算机奥赛.但是在机房里的可能是一神和奥神,也许有凯哥. 高一寒假学 ...

  4. Unity 图形处理(切分与拉伸)

    素材的导入设置 1.导入的图片要设置为 Sprite 才能作为UI使用 2.如果需要进行切分,Sprite Mode 选择 Multiple 进行切分和拉伸设置 1.点击进入精灵编辑视图 2.点击按钮 ...

  5. Oracle导入数据无法导出空表的问题

    Oracle 11G在用export导出时,空表不能导出,11G R2中有个新特性,当表无数据时,不分配segment,以节省空间. 那么我们应该如何导出空表: 利用如下语句生成alter语句,未每个 ...

  6. 微信跳转技术,浏览器唤起微信,weixin://dl/business/?ticket=

    weixin://dl/business/?ticket=  到底怎么生成的?调用以下接口 weixin://dl/scan 扫一扫weixin://dl/feedback 反馈weixin://dl ...

  7. typescript 安装

    1,全局安装 cnpm install typescript -g (tsc -v) 2,初始化 tsc --init 3,自动编译(hbuilder) 工具-插件安装-浏览eclipse插件市场-搜 ...

  8. thinkphp5使用空模块

    今天想做一个功能,可以后台设置url是二级域名(也是指向同一个服务器)还是一级域名(域名/模块),网上找了找,TP3.2开始取消了空模块.所以只能自己修改框架源码了. ----------有点晚,明天 ...

  9. vuex学习

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 简单的理解就是你在state中定义了一个数 ...

  10. CROS+node-basis+ajax

    $.ajax({ url: this.baseUrl + this.restful.showDesigerViewList, type: "post", dataType: &qu ...