for i in “file1” “file2” “file3”
for i in /boot/*
for i in /etc/*.conf
for i in $(seq -w 10) –》等宽的01-10
for i in {1..10}
for i in $( ls )
for I in $(< file)
for i in “$@” –》取所有位置参数,可简写为for i
注意:bash shell支持C式for循环

#!/bin/bash
j=$
for ((i=; i<=j; i++))
do
touch file$i && echo file $i is ok
done

复习
$@: 所有位置变量的内容
$#: 位置变量的个数
$0: 文件名
$*: 所有位置变量的内容
编写脚本应该注意的事项:
开头指定使用什么shell,例如:bash,ksh,csh等
脚本功能描述,使用方法,作者,版本,日期等
变量名,函数名要有实际意义,函数名以动名词形式,第二个单词首字母要大写。例如:updateConfig()
缩进统一用4个空格,不用TAB
取变量值使用大括号,如${varname}
删除文件时,如果路径有变量的,要判断变量有值,如rm -f ${abc}/*
如果变量abc没有值,则会把根目录下的文件删除
脚本中尽量不要使用cd变换目录
函数中也要有功能描述,使用依法,版本,日期等
函数的功能要单一,不要太复杂
$()比` `更好
尽量不要使用多层if语句,而应该以case语句替代
如果需要执行确定次数的循环,应该用for语句替代while语句
输入的参数要有正确性判断
多加注释,方便自己或他人阅读。
练习1:编写脚本清空所有arp缓存记录:

#!/bin/bash
for i in $(arp | tail -n +|tr -s ' ' |cut -d' ' -f1)
do
arp -d $i
done

练习2:产生十个随机数:
方法1:

#for i in {..};do echo $RANDOM;done

方法2:

#for i in $(seq );do echo $RANDOM;done

练习3:倒数五秒:

#!/bin/bash
echo "准备倒数5秒:"
for i in $(seq - )
do
echo -en "$i";sleep
done
echo -e "开始"

方法2:

#!/bin/bash
echo "准备倒数5秒:"
for i in $(seq - )
do
echo -en "\b$i";sleep
done
echo -e "\b开始"

练习4:批量添加用户:

#!/bin/bash
for i in $(cat /root/users.txt) --》从列表文件读取文件名
do
useradd $i
echo "" | passwd --stdin $i --》通过管道指定密码字串
done

练习:
查找出uid大于10000的用户,然后删除,必须使用for循环。

#/bin/bash
u_uid=(`cat /etc/passwd | awk -F: '{print $3}'`)
u_name=(`cat /etc/passwd | awk -F: '{print $1}'`)
for i in `seq ${#u_uid[@] }`
do
if (( ${u_uid[i-]} > ))
then
userdel -r ${u_name[i-]}&&echo "${u_name[i-1]} delete ok"
fi
done

方法2:用正则找出大于10000的用户:

#cat /etc/passwd | egrep “[-]{} | [-]{,}”

原文:https://blog.csdn.net/qq_18312025/article/details/78278989

-

shell中的for循环用法详解的更多相关文章

  1. Oracle数据库中序列(SEQUENCE)的用法详解

    Oracle数据库中序列(SEQUENCE)的用法详解   在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了 ...

  2. SVN中tag branch trunk用法详解

    SVN中tag branch trunk用法详解 2010-05-24 18:32 佚名 字号:T | T 本文向大家简单介绍一下SVN中tag branch trunk用法,SVN中tag bran ...

  3. delphi中Application.MessageBox函数用法详解

    delphi中Application.MessageBox函数用法详解 Application.MessageBox是TApplication的成员函数,声明如下:functionTApplicati ...

  4. .NET中的Timer类型用法详解

    这篇文章主要介绍了.NET中的Timer类型用法,较为详细的分析了Timer类型在各种环境下的用法,需要的朋友可以参考下   在.NET FrameWork中有多个Timer,那么怎么根据实际情况进行 ...

  5. Javascript中while和do-while循环用法详解

    while循环 while 语句与 if 语句相似,都有条件来控制语句(或语句块)的执行,其语言结构基本相同:while(conditions){    statements;} while 语句与 ...

  6. ubuntu中rar与unrar用法详解

    本文转载:http://helloklzs.iteye.com/blog/1139993 安装: sudo apt-get install rar 这样就可以安装了 删除是以下语句 sudo apt- ...

  7. shell中各种括号的作用详解()、(())、[]、[[]]、{}

    一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...

  8. Javascript中的this关键字用法详解

    在javascript里面,this是一个特殊的对象,它不像其他编程语言那样,是存储在实例中的值,直接指向此实例. 而是作为一个单独的指针,在不同的情况之下,指向不同的位置,这也是为什么我们会将它搞混 ...

  9. Python中scatter函数参数用法详解

    1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如下: 4.基本的使用方法如下: #导入必要的模块 import numpy as np import matp ...

随机推荐

  1. 批量删除checkbox前台后台

    <%@ page contentType="text/html;charset=UTF-8" %><%@ include file="/WEB-INF/ ...

  2. vue语法概要二

    函数 用途 类别 v-html 用于输出html格式的数据 输出 v-bing 用于输出值 输出 v-model 双向绑定 输入和输出 v-if 逻辑判断 分支语句 v-else 同上 分支语句 v- ...

  3. SpringCloud之Config配置中心+BUS消息总线原理及其配置

    一.配置中心作用 在常规的开发中,每个微服务都包含代码和配置.其配置包含服务配置.各类开关和业务配置.如果系统结构中的微服务节点较少,那么常规的代码+配置的开发方式足以解决问题.当系统逐步迭代,其微服 ...

  4. ORACLE 存储过程提高

    1.SQLCODE和SQLERRM 2.%TYPE和%ROWTYPE的使用 3.sql%rowcount的作用 1.SQLCODE和SQLERRM SQLCode:数据库操作的返回码,其中 --成功: ...

  5. 【Zookeeper】集群环境搭建

    一.概述 1.1 Zookeeper的角色 1.2 Zookeeper的读写机制 1.3 Zookeeper的保证 1.4 Zookeeper节点数据操作流程 二.Zookeeper 集群环境搭建 2 ...

  6. Mount 使用方法

    NAME mount - 挂载文件系统 SYNOPSIS 总览 mount [-lhV] mount -a [-fFnrsvw] [-t vfstype] [-O optlist] mount [-f ...

  7. linux在线安装jdk,tomcat,Nginx

    安装jdk yum search java 查看java的所有版本内容 yum install -y java版本 -openjdk 安装成功 安装tomcat yum search tomcat y ...

  8. 《浏览器工作原理与实践》<08>调用栈:为什么JavaScript代码会出现栈溢出?

    在上篇文章中,我们讲到了,当一段代码被执行时,JavaScript 引擎先会对其进行编译,并创建执行上下文.但是并没有明确说明到底什么样的代码才算符合规范. 那么接下来我们就来明确下,哪些情况下代码才 ...

  9. hive中计算某个日期是星期几的算法

    pmod(floor((unix_timestamp('2019-06-11 00:00:00')-unix_timestamp('1970-01-05 00:00:00'))/(3600*24)), ...

  10. JAVA遇见HTML——JSP篇:JSP内置对象(下)

    什么是session session表示客户端与服务器的一次会话 Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 从上述 ...