linux字符测试以及for循环
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循环的更多相关文章
- linux基础11-bash编程(字符串测试 和 for循环)
练习:传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来.(1)字符测试:==:测试是否相等,相等为真,不等为假!=: 测试是否不等,不等为真,等为假>< ...
- 归纳整理Linux下C语言常用的库函数----字符串转换、字符测试、及内存控制
在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. ...
- 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍
两款[linux字符界面下]显示[菜单],[选项]的powershell脚本模块介绍 powershell linux ps1 menu choice Multiselect 传教士 菜单 powe ...
- Linux字符设备驱动实现
Linux字符设备驱动实现 要求 编写一个字符设备驱动,并利用对字符设备的同步操作,设计实现一个聊天程序.可以有一个读,一个写进程共享该字符设备,进行聊天:也可以由多个读和多个写进程共享该字符设备,进 ...
- Linux字符设备简单示例
1. Linux字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现open.close.read和write系统调用.例如:串口.Led.按键等. 2. 通过字符设备文件 ...
- 6-3 bash脚本编程之五 字符串测试及for循环
1. 字符测试 ==:等号两边要有空格,否则会被认为是赋值. !=: 测试是否相等,记住如果不等为真,等为假. -n string: 测试指定字符串是否为空,空位真,不空为假. -s string: ...
- Kali linux渗透测试常用工具汇总1
1.ProxyChains 简介:代理工具.支持HTTP/SOCKS4/SOCK5的代理服务器,允许TCP/DNS通过代理隧道. 应用场景:通过代理服务器上网. 配置:/etc/proxychains ...
- 深入理解Linux字符设备驱动
文章从上层应用访问字符设备驱动开始,一步步地深入分析Linux字符设备的软件层次.组成框架和交互.如何编写驱动.设备文件的创建和mdev原理,对Linux字符设备驱动有全面的讲解.本文整合之前发表的& ...
- Linux字符设备驱动结构(一)--cdev结构体、设备号相关知识机械【转】
本文转载自:http://blog.csdn.net/zqixiao_09/article/details/50839042 一.字符设备基础知识 1.设备驱动分类 linux系统将设备分为3类:字符 ...
随机推荐
- ubuntu安装时系统分区设置
1. 创建主分区:主分区,用于存放系统 20G 主分区 空间起始位置 Ext4日志文件系统 / 2. 创建swap分区:逻辑分区.大小设置为电脑内存大小,2G: 2048MB ...
- 微信小程序之支付密码输入demo
在小程序中实现支付密码的输入,要解决几个问题: 1.小程序要想唤起键盘,必须要借助input控件.通过input控件和其属性focus来唤起和隐藏输入键盘. 2.要让input控件不可见.让光标和输入 ...
- Ubuntu系统常见问题
搜狗拼音输入法 下载地址 : http://pinyin.sogou.com/linux/?r=pinyin 安装帮助: http://pinyin.sogou.com/linux/help.php ...
- pygame学习之绘制圆
import pygame from pygame.locals import * pygame.init() screen = pygame.display.set_mode((600, 500)) ...
- java中的时间类型
java时间的格式 SimpleDateFormat dateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Stri ...
- android emulator启动的两种方法详解
android emulator启动的两种方法详解 转https://blog.csdn.net/TTS_Kevin/article/details/7452237 对于android学习者,模 ...
- MySQL 如何使用左链接代替 NOT IN
核心思想 通过左链接 查询出要排除的数据 然后和主表进行匹配 拿去未匹配到的数据 可以使用 IS NULL 来过滤掉 案例稍后 更新 select * from a left join on a.id ...
- C++日志打印
C++日志打印: %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 % ...
- DICOM图像转出为bmp格式图像方法(matlab程序实现)
在matlab中用dicomread读取dicom文件后,生成一个MxN矩阵(对应图像像素个数),每个像素灰度数据是int16格式 但是bmp图像灰度是int8格式的(灰度范围0~255),所以若想把 ...
- 通过命令行操作MYSQL的方法 以及导入大的SQL备份文件
运行 输入CMD 进入 命令行窗口 输入Mysql.exe的路径 如:c:/wamp/bin/mysql.exe 回车 这时出现 welcome to the mysql ...的提示 进入成 ...