shell中for循环语句,shell脚本中的for循环,shell中的for循环用法详解

shell中for循环语句,shell脚本中的for循环,shell中的for循环用法详解

本文主要介绍shell中for循环用法的详细说明。通过示例代码非常详细,对大家的学习或者工作都有一定的参考价值。有需要的朋友下面和边肖一起学习。

for 命令:

for i在中的各种用法:

对于“文件1”“文件2”“文件3”中的I

对于i in /boot/*

对于/etc/*中的I。会议

对于I在$(seq-w 10)-01-10中的等宽

对于{1…10}年的I

对于I,单位为美元(ls)

以美元为单位(文件)

「$ @」中的For i会接受所有位置参数,可缩写为for I。

注意:bash shell支持C类型的for循环

#!/bin/bash

j=1美元

for((I=1;I=j;我))

触摸文件$i回显文件$i正常

完成的

$ @:所有位置变量的内容

$ #:位置变量的数量

$0:文件名

$ *:所有位置变量的内容

剧本写作注意事项:

指定开始使用什么shell,例如:bash、ksh、csh等。

脚本功能描述、用法、作者、版本、日期等。

变量名和函数名应该有实际意义。函数名应该是动名词形式,第二个单词的第一个字母应该大写。示例:updateConfig()

缩进4个空格,而不是制表符。

对变量值使用大括号,例如{ varname }

删除文件时,如果路径中有变量,则判断变量有值,如rm -f ${abc}/*如果变量abc没有值,则根目录中的文件将被删除。

尽量不要用cd来改变脚本中的目录。

功能也要有功能描述,使用规律,版本,日期等。

功能要单一,不要太复杂。

$()比```好。

尽量不要使用多层if语句,而是使用case语句。

如果需要执行一定数量的循环,应该用for语句替换while语句。

输入参数要判断正确。

添加更多注释,以便自己或他人阅读。

练习1:编写一个脚本来清除所有arp缓存记录:

#!/bin/bash

对于I in $(ARP | tail-n ^ 2 | tr-s ' ' | cut-d ' '-f1)

arp -d $i

完成的

练习2:生成十个随机数:

方法1:

对于{ 0 }中的I.9};do echo $ RANDOM完成的

方法二:

以美元为单位的I(序列10);do echo $ RANDOM完成的

练习3:倒数五秒:

#!/bin/bash

“回声”准备倒计时5秒

对于以美元表示的I(序号5 -1 1)

echo-en ' $ I ';睡眠1

完成的

Echo -e' Go

方法二:

#!/bin/bash

“回声”准备倒计时5秒

对于以美元表示的I(序号5 -1 1)

echo-en ' \ b $ I ';睡眠1

完成的

echo-e ' b开始'

练习4:批量添加用户:

#!/bin/bash

对于I in $ (cat/root/users.txt)-"从列表文件中读取文件名。

useradd $i

echo ' 123456“| passwd-stdin $ I-”指定通过管道的密码字符串

完成的

练习:

查找uid大于10000的用户,然后删除它们。必须使用for循环。

#/bin/bash

u _ uid=(` cat/etc/passwd | awk-F:' { print $ 3 } ' `)

u _ name=(` cat/etc/passwd | awk-F:' { print $ 1 } ' `)

对于“seq ${#u_uid[@] }”中的I

if (( ${u_uid[i-1]} 10000))

然后

userdel-r $ { u _ name[I-1]} echo ' $ { u _ name[I-1]}删除成功'

船方不负担装货费用

完成的

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

cat/etc/passwd | egrep " 1[0-9]{ 4 } |[2-9]{ 5,} "

示例:根据ip地址检查网络中幸存的主机ip。

Break语句:(跳出循环)

在for、while、until等循环语句中。用于跳出当前循环体,执行循环体后的语句。

Continue语句:(跳出这个循环)

在循环语句中,如for、while、until等。用于跳出循环体中剩余的语句,重新判断条件,以便执行下一个循环。

练习:使用for循环批量添加用户。

#!/bin/bash

对于I in $ (cat/root/users.txt)-"从列表文件中读取文件名。

useradd $i

Echo "123456" | passwd $ i-stdin-"指定通过管道的密码UNAME

完成的

(ps:判断用户是否存在:id命令)

位置变量

位置变量:$n,但是大于9的位置参数应该用{}: ${10}括起来

position的作用:其实就是把参数传入脚本。

$0-"表示脚本本身的名称。

(位置变量最常见的用法:bash 1.sh variable 1 variable 2…)

预定义变量:

$ #:命令行中位置变量的数量

$ *:所有位置变量的内容(较少使用)

$ @:所有位置变量的内容

$0:当前正在执行的进程/程序的名称

:当前shell的PID值,echo

:当前shell的PID值,echo

;Ps $$,通常用作临时变量的后缀

$?执行最后一个命令后返回的状态。当返回的状态值为0时,执行正常;当值不为0时,执行异常或错误。

$RANDOM:随机数,可以用作临时文件名

例:输出一个0-9内的随机数—“-”回声$((RANDOM))”

输出1-10内的随机数—“-”回声$((RANDOM 1))”

!$:表示上一个命令的参数

!执行最后一个命令。

练习:输出

1美元是aa,

2美元是bb,

3美元是cc,

4美元是dd,

5美元是ee

回答:

#!/bin/bash

echo '此脚本中有$#个参数'

N=1-“变量n用于计数

因为我在$@

echo \ $ $ N是$i

((N))

完成的

PS:

Ping命令

-c 1—“只ping一次。

-I 0.2-“第一包和第二包之间的间隔为0.2s

-W 2-"仅等待2s

示例:

ping 172.30.132.123 /dev/null

重定向ping命令没用,成功执行了$?如果不成功,返回0或1。

根据IP地址检查网络中幸存的主机IP(全面扫描)

#!/bin/bash

对于192.168.1中的r。{1.254}

ping -c1 -w1 '${ip}' /dev/null

完成的

ARP-n | grep ether | tr-s ' ' | cut-d ' '-f1

关于ping命令的经典脚本:

对于{ 1 }中的I.193}

(平-c1 -i0.2 -w1 172.16.30。$i /dev/null

如果(($?==0 ))

然后

回声172.16.30。$i up' 2.txt

其他

回声172.16.30。$i down' 3.txt

Fi) -“这段放在后台执行,大大加快了速度。

完成的

睡眠2

live_pc_num=`cat 2.txt|wc -l '

down_pc_num=`cat 3.txt|wc -l '

echo“有$down_pc_num已关闭”

echo“有$live_pc_num已启动”

回显'列表:'

cat 2.txt

rm -rf 2.txt 3.txt

break 语句

典型的while循环:

#!/bin/bash

i=1

While: -":等价为真

回显' $i '

((一))

睡眠0.3

完成的

注意:这是一个无限循环,会一直进行下去。

使用break,您可以跳出循环:

#!/bin/bash

i=1

同时:

回显' $i '

((一))

If ((I==20000))-"仅输出1-19999。

然后

破裂

船方不负担装货费用

完成的

总结

突破:跳出整个循环

退出:跳出脚本

继续:跳出这个循环,然后执行下一个循环。

案例练习9:

批量添加用户,并满足以下要求:

回答:

#!/bin/bash

Read -p '请输入您用户名的前缀:' a

Read -p '请输入用户数量:' num

if (( $num=10))

然后

n=0

对于“序列$num”中的I

如果用户添加$a$i /dev/null

然后

Echo '用户$a$i已成功创建!'

((n))

echo ' 123456 ' | passwd $ a $ I-stdin/dev/null

船方不负担装货费用

完成的

Echo '创建的用户总数:$n '

其他

Echo '您最多只能创建10个用户!'

船方不负担装货费用

关于for循环在shell中的详细使用,本文到此结束。更多关于shell for loop的相关内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: