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. 032 Java再次总结

    1.大纲 多线程怎么用的,线程池,事务,传播机制与隔离级别,反射,泛型,数据库引擎的区别,数据库merge,窗口函数,fastJson,JVM调优,GC钩子,Linux的awk,shell,HashM ...

  2. SpringBoot配置文件

    一.配置文件 配置文件应该是无论在哪个框架中都是一个重要角色,而我们最为常用的xxx.xml和xxx.properties,还有springboot推荐使用的xxx.yml. 二.SpringBoot ...

  3. 动态规划——Freedom Trail

    题目:https://leetcode.com/problems/freedom-trail/ 额...不解释大意了,题目我也不想写过程了有点繁琐,直接给出代码: public int findRot ...

  4. Spark集群部署(standLone)模式

      安装部署: 1. 配置spark为1个master,2个slave的独立集群(Standlone)模式, 可以在VMWare中构建3台运行Ubuntu的机器作为服务器: master主机配置如下: ...

  5. css3 图片阴影

    box-shadow:1px 2px 4px #999999; 效果:

  6. Kubernetes1.7—DNS安装

    虽然通过了Service解决了Pod重建后IP动态变化(服务发现).负载均衡问题,但使用Service还是要需要知道CLUSTER-IP,而通过NDS可以解决该问题:在Kubernetes集群中可通过 ...

  7. React(九)create-react-app创建项目 + 按需加载Ant Design

    (1)create-react-app如何创建项目我前面第一章介绍过了,这里就不过多写了, (2)我们主要来说说按需加载的问题 1. 引入antd npm install antd --save 2. ...

  8. HTML入门14

    HTML表单 这块部分开始强调表单也是用的比较多的部分,好好补漏啊啊啊啊 表单用来做交互,处理所有方面结构到样式,到自定义小部件. form元素,严禁嵌套表单,表单嵌套会使得表单得行为不可预知,引入f ...

  9. [LeetCode] Smallest Subtree with all the Deepest Nodes 包含最深结点的最小子树

    Given a binary tree rooted at root, the depth of each node is the shortest distance to the root. A n ...

  10. Java语法细节 - 可见性

    目录 JAVA访问和修饰符的关系一览表 JAVA访问和修饰符的关系一览表 Modifier Class Package Subclass World public Y Y Y Y protected ...