12.for 条件循环语句 (3)

for 循环语句

允许脚本一次性读取多个信息,然后逐一对信息进行操作处理。当要处理的数据有范围时,使用for循环语句。

         使用 for 循环语句从列表文件中读取多个用户名,然后为其逐一创建用户账户并设 置密码。首先创建用户名称的列表文件users.txt,每个用户名称单独一行。

[root@localhost ~]# cat users.txt
marry
xiaoming
xiaohong
trick1
trick2
trick3
trick4
trick5
trick6
trick7

         在脚本中使用 read 命令读取用户输入的密码值,然 后赋值给PASSWD变量,

        并通过-p参数向用户显示一段提示信息,告诉用户正在输入的内容 即将作为账户密码。

        在执行该脚本后,会自动使用从列表文件 users.txt 中获取到所有的用户 名称,

        然后逐一使用“id用户名”命令查看用户的信息,并使用$?判断这条命令是否执行成 功,也就是判断该用户是否已经存在。

        在输入为账户设定的密码后将由脚本自动检查 并创建这些账户。

        由于已经将多余的信息通过输出重定向符转移到了/dev/null黑洞文件中,

        因此 在正常情况下屏幕窗口除了“用户账户创建成功”(Create success)的提示后不会有其他内容

[root@localhost ~]# cat addusers.sh
#!/bin/bash
read -p "输入你的密码:" PASSWD
for UNAME in `cat users.txt`
doid $UNAME &> /dev/nullif [ $? -eq 0 ]thenecho "$UNAME , ALready exists"elseuseradd $UNAME &> /dev/nullecho "$PASSWD" | passwd --stdin &> /dev/nullecho "$UNAME , create success"fi
done
[root@localhost ~]# bash addusers.sh
输入你的密码:123456
marry , create success
xiaoming , create success
xiaohong , create success
trick1 , create success
trick2 , create success
trick3 , create success
trick4 , create success
trick5 , create success
trick6 , create success
trick7 , create success

        /dev/null是一个被称作Linux黑洞的文件,把输出信息重定向到这个文件等同于删 除数据(类似于没有回收功能的垃圾箱),可以让用户的屏幕窗口保持简洁。

 创建成功

[root@localhost ~]# tail -10 /etc/passwd
marry:x:1001:1001::/home/marry:/bin/bash
xiaoming:x:1002:1002::/home/xiaoming:/bin/bash
xiaohong:x:1003:1003::/home/xiaohong:/bin/bash
trick1:x:1004:1004::/home/trick1:/bin/bash
trick2:x:1005:1005::/home/trick2:/bin/bash
trick3:x:1006:1006::/home/trick3:/bin/bash
trick4:x:1007:1007::/home/trick4:/bin/bash
trick5:x:1008:1008::/home/trick5:/bin/bash
trick6:x:1009:1009::/home/trick6:/bin/bash
trick7:x:1010:1010::/home/trick7:/bin/bash

for语句和if结合

测试主机是否在线

准备主机列表文件

[root@localhost ~]# cat ip.txt
192.168.10.1
192.168.20.1
[root@localhost ~]# cat  checkhosts.sh
#!/bin/bash
HLIST=$(cat ~/ip.txt)
for IP in $HLIST
doping -c 3 -i 0.2 -w 3 $IP &> /dev/nullif [ $? -eq 0 ]thenecho "Host $IP is On-line"elseecho "Host $IP is Off-line"fi
done
[root@localhost ~]# bash checkhosts.sh
Host 192.168.10.1 is Off-line
Host 192.168.20.1 is On-line

 

        将前面的双分支if条件语句与for循环语句相结合,让脚本从主机列表文件 ip.txt中自动读取IP地址(用来表示主机)并将其赋值给HLIST变量,从而通过判断ping 命令执行后的返回值来逐个测试主机是否在线。

        脚本中出现的“$(命令)”是一种完全类似于转义字符中反引号`命令`的Shell操作符,效果同样是执行括号或双引号括起来的 字符串中的命令。

        Shell脚本中的代码缩进格式会根据不同的语句而改变。这是由 Vim编辑器自动完成的,用户无须进行额外操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android studio从空白开始

对我来说,真正的第一步是清理电脑C盘。从剩余8G清理到25G,把原来看不顺眼又不敢删的文件夹和软件全删了,删爽了的后果就是,用两天的时间在把一些环境配置慢慢装回来,node.js,jdk,npm。努力把它们…

密码学中的承诺原语(Commitment Scheme)

1背景介绍 让我们考虑以下情况:Alice在佳士得(Christies)购买Banksy的最后一件杰作,在这之前,她会确保艺术品在售出后不会被销毁。 佳士得选择了维克里封闭竞标的拍卖方式,这是一种相当常见的做法&#x…

Vue+Element(el-upload+el-form的使用)+springboot

目录 1、编写模板 2、发请求调接口 3、后端返回数据 1.编写实体类 2.Controller类 3、interface接口(Service层接口) 4.Service(接口实现) 5、interface接口(Mapper层接口) 6、xml 4、upload相关参…

前端 防止浏览器提示记住密码以及自动填充密码

当前端 <input /> 的 type’password‘ 时&#xff0c;浏览器为了优化用户体验&#xff0c;会在表单提交后提示用户记住密码 如果不想要这样的行为&#xff0c;最简单的当然是提示用户自己在浏览器设置中进行相关配置 如果希望在代码层面阻止浏览器提示是否记住密码或者…

.git 文件夹结构解析

.git 文件夹结构解析 在这篇文章就让我们来看看这个 Git 仓库里的文件分别都是用来干什么的&#xff0c;以及在执行了相关的 Git 命令后这些文件会如何响应。 hooks&#xff08;钩&#xff09;&#xff1a;存放一些shell脚本info&#xff1a;存放仓库的一些信息logs&#xff…

ChromeDriver谷歌驱动最新版安装120/121/122

chromeDriver最新版本下载 最新驱动 https://googlechromelabs.github.io/chrome-for-testing/参考&#xff1a; https://blog.csdn.net/m0_57382185/article/details/134007615

ORM-02-Hibernate 对象关系映射(ORM)框架

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.&#xff08;手写简易版 mybatis&#xff09; Hibernate Hibernate ORM 允许开发者更轻松地编写那些数据在应用程序进程结束后仍然存在的应用程序。 作为一个对象关系映射&#xff08…

基于蝗虫优化的KNN分类特征选择算法的matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 KNN分类器基本原理 4.2 特征选择的重要性 4.3 蝗虫优化算法&#xff08;GOA&#xff09; 5.完整程序 1.程序功能描述 基于蝗虫优化的KNN分类特征选择算法。使用蝗虫优化算法&#xff…

C++入门语法———命名空间,缺省参数,重载函数

文章目录 一.命名空间1.存在意义2.语法使用1.定义命名空间2.使用命名空间的三种方式 二.缺省参数1.全缺省参数2.半缺省参数 三.重载函数1.定义2.重载原理———名字修饰 一.命名空间 1.存在意义 C命名空间的主要意义是为了避免命名冲突&#xff0c;尤其是在大型项目中可能存在…

“高级SPA项目构建与路由实现“

目录 引言1. SPA项目构建1.1 安装vue-cli,webpack1.2 创建 Vue.js项目1.3 “一问一答”模式1.4 启动项目 2. SPA项目完成路由3. 基于SPA项目完成嵌套路由总结 引言 在现代Web开发中&#xff0c;单页应用&#xff08;SPA&#xff09;已经成为一种流行的开发模式。SPA通过在前端…

优优嗨聚:美团代运营服务,为商家赋能,打造流量转化的秘密武器

随着互联网的飞速发展&#xff0c;人们越来越依赖线上平台进行消费。作为国内领先的电商平台之一&#xff0c;美团吸引了众多商家入驻。然而&#xff0c;如何在竞争激烈的美团平台上脱颖而出&#xff0c;成为了商家们面临的一大挑战。此时&#xff0c;美团代运营服务应运而生&a…

HTML5和CSS3的新特性

HTML5的新特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等 1&#xff0c;HTML5新增的语义化标签 <header> 头部标签 <nav> 导航标签 <article> …

《WebKit 技术内幕》学习之九(4): JavaScript引擎

4 实践——高效的JavaScript代码 4.1 编程方式 关于如何使用JavaScript语言来编写高效的代码&#xff0c;有很多铺天盖地的经验分享&#xff0c;以及很多特别好的建议&#xff0c;读者可以搜索相关的词条&#xff0c;就能获得一些你可能需要的结果。同时&#xff0c;本节希望…

记录centos安装nginx过程和问题

今天在centos上安装了nginx&#xff0c;遇到了些问题&#xff0c;记录一下。 使用yum直接安装的话安装的版本是1.20.1&#xff0c;使用源码包安装可以装到1.25.0&#xff08;最新稳定版&#xff09;。很有意思的一点是两种安装方法下安装的路径是不同的&#xff0c;且源码安装…

Java 面向对象案例 03(黑马)

代码&#xff1a; public class phoneTest {public static void main(String[] args) {phone [] arr new phone[3];phone p1 new phone("华为",6999,"白色");phone p2 new phone("vivo",4999,"蓝色");phone p3 new phone("苹…

手把手教你用深度学习做物体检测(一): 快速感受物体检测的酷炫

我们先来看看什么是物体检测&#xff0c;见下图&#xff1a; 如上图所示&#xff0c; 物体检测就是需要检测出图像中有哪些目标物体&#xff0c;并且框出其在图像中的位置。 本篇文章&#xff0c;我将会介绍如何利用训练好的物体检测模型来快速实现上图的效果&#xff0c;这里…

Pyside6中QTableWidget使用

目录 一&#xff1a;介绍&#xff1a; 二&#xff1a;演示 一&#xff1a;介绍&#xff1a; 在 PySide6 中&#xff0c;QTableWidget 是一个用于展示和编辑表格数据的控件。它提供了在窗口中创建和显示表格的功能&#xff0c;并允许用户通过单元格来编辑数据。 要使用 QTabl…

Windows 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载

目录 Tftpd32/64文件下载更多内容 TFTP&#xff08;Trivial File Transfer Protocol&#xff0c;简单文件传输协议&#xff09;是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务&#xff0c;端口号为 6…

免费SSL申请和自动更新

当前是在mac下操作 安装certbot # mac下brew安装即可 brew install certbotcentos 安装 centos安装文档 申请泛解析证书 sudo certbot certonly --manual --preferred-challengesdns -d *.yourdomain.com## 输出 Saving debug log to /var/log/letsencrypt/letsencrypt.lo…