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. computed和watch的使用场景

    转载地址:https://blog.csdn.net/yuwenshi12/article/details/78561372 从作用机制和性质上看待methods,watch和computed的关系 ...

  2. 11 Windows编程——定时器

    周期性的发送WWL_TIMER消息的一个东西,这个周期可以由程序员自己设定.设定周期的数是SetTimer,停止定时器消息发送的函数是:Killximer: 定时器消息的特点: 1.不准确(也就是说, ...

  3. 11_Azkaban案例实践4_Command操作MapReduce

    MAPREDUCE任务 Mr任务依然可以使用command的job类型来执行 1.创建job描述文件,及mr程序jar包(示例中直接使用hadoop自带的example jar) # mrwc.job ...

  4. Linux下zookeeper集群搭建

    Linux下zookeeper集群搭建 部署前准备 下载zookeeper的安装包 http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper ...

  5. idou老师教你学Istio 27:解读Mixer Report流程

    1.概述 Mixer是Istio的核心组件,提供了遥测数据收集的功能,能够实时采集服务的请求状态等信息,以达到监控服务状态目的. 1.1 核心功能 •前置检查(Check):某服务接收并响应外部请求前 ...

  6. 【Jenkins】忘记admin密码,可以用此方法帮你解决

    突然有一日发现自己忘记了jenkins的管理员密码,因为我一直登录的是另外一个非管理员账户.如果出现必须要使用管理员账户操作的,比如用户管理那里的,必须要管理员账号吧,这就尴尬了. 很方的我打开安装j ...

  7. linux配置全局环境变量-jdk

    1.vi /etc/profile 2.输入大写G,定位内容末尾. 3.在末尾输入 export JAVA_HOME=/home/order/soft/jdk PATH=$PATH:$HOME/.lo ...

  8. Comet OJ - Contest #2 (D 错综的光影所迷惑的思念是) 容斥计数

    题意:给定一颗 $n$ 个节点的树,定义 $dis(x,y)$ 为树上点 $x$ 到 $y$ 的路径经过的边数. 定义一个点集 $S$ 的 $f(S)$ 为 $f(S)=max\left \{dis( ...

  9. pat 甲级 1057 Stack(30) (树状数组+二分)

    1057 Stack (30 分) Stack is one of the most fundamental data structures, which is based on the princi ...

  10. [Luogu] 贪婪大陆

    https://www.luogu.org/problemnew/show/P2184 区间修改时只需修改区间端点的numl或numr值 区间查询x-y只需用1-y的numr - 1-(x - 1)的 ...