shell中的for循环用法详解
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循环用法详解的更多相关文章
- Oracle数据库中序列(SEQUENCE)的用法详解
Oracle数据库中序列(SEQUENCE)的用法详解 在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了 ...
- SVN中tag branch trunk用法详解
SVN中tag branch trunk用法详解 2010-05-24 18:32 佚名 字号:T | T 本文向大家简单介绍一下SVN中tag branch trunk用法,SVN中tag bran ...
- delphi中Application.MessageBox函数用法详解
delphi中Application.MessageBox函数用法详解 Application.MessageBox是TApplication的成员函数,声明如下:functionTApplicati ...
- .NET中的Timer类型用法详解
这篇文章主要介绍了.NET中的Timer类型用法,较为详细的分析了Timer类型在各种环境下的用法,需要的朋友可以参考下 在.NET FrameWork中有多个Timer,那么怎么根据实际情况进行 ...
- Javascript中while和do-while循环用法详解
while循环 while 语句与 if 语句相似,都有条件来控制语句(或语句块)的执行,其语言结构基本相同:while(conditions){ statements;} while 语句与 ...
- ubuntu中rar与unrar用法详解
本文转载:http://helloklzs.iteye.com/blog/1139993 安装: sudo apt-get install rar 这样就可以安装了 删除是以下语句 sudo apt- ...
- shell中各种括号的作用详解()、(())、[]、[[]]、{}
一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...
- Javascript中的this关键字用法详解
在javascript里面,this是一个特殊的对象,它不像其他编程语言那样,是存储在实例中的值,直接指向此实例. 而是作为一个单独的指针,在不同的情况之下,指向不同的位置,这也是为什么我们会将它搞混 ...
- Python中scatter函数参数用法详解
1.scatter函数原型 2.其中散点的形状参数marker如下: 3.其中颜色参数c如下: 4.基本的使用方法如下: #导入必要的模块 import numpy as np import matp ...
随机推荐
- [LeetCode] 46. Int数组全排列 ☆☆☆(回溯)
描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2, ...
- gitlab中的几个常用界面(runner管理、gitlab-ci.yml管理、runner token管理、新建用户、拉用户入工程、拉用户入组、复制工程导入组)
目录: 1.runner管理 2.gitlab-ci.yml管理 3.runner token管理 4.新建用户 5.拉用户入工程 6.拉用户入组 7.复制工程导入组 1.runners界面 http ...
- 第五章、Celery分布式系统
Celery 官方 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/la ...
- sklearn特征工程
目录 一. 特征工程是什么? 2 ①特征使用方案 3 ②特征获取方案 4 ③特征处理 4 1. 特征清洗 4 2. 数据预处理 4 3. 特 ...
- Python(phone)模块获取手机号归属地、区号、运营商等
Python(phone)模块获取手机号归属地.区号.运营商等 一.我使用的是python3,可以自行搜索下载 二.安装phone模块, pip install phone 三.测试代码如下: fro ...
- 开发神技能 | Python Mock 的入门
Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西.准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代 ...
- Nginx入门(一)——安装和配置
1.下载地址 http://nginx.org/en/download.html 2.启动Nginx 进入window的cmd窗口,输入如下图所示的命令,进入到nginx目录(F:/nginx-1.8 ...
- js中in关键字的使用方法
1.for...in 对数组或对象的循环/迭代操作 对于数组循环出来的是数组元素:对于对象循环出来的是对象属性 2.判断对象是否是数组/对象的元素/属性 格式:(变量 in 对象) 当‘对象’是数组时 ...
- Java中的Listener 监听器
Listener的定义与作用 监听器Listener就是在application,session,request三个对象创建.销毁或者往其中添加修改删除属性时自动执行代码的功能组件. Listener ...
- HDU-1160-FatMouse's Speed(DP, 最长递增子序列)
链接: https://vjudge.net/problem/HDU-1160 题意: FatMouse believes that the fatter a mouse is, the faster ...