加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell的进阶编程

发布时间:2020-12-15 21:13:45 所属栏目:安全 来源:网络整理
导读:shell的进阶编程 关于for ??for 变量名字 in 列表;do ????循环体 ??done ??例如 for: for NAME [in WORDS ... ] ; do COMMANDS; don 其中前面的name就是个变量名,而且不需要加$,每次循环和中间列表中的值有关,中间的列表可以使用花括号来表示指定范围,
shell的进阶编程

关于for

??for 变量名字 in 列表;do

????循环体

??done

??例如for: for NAME [in WORDS ... ] ; do COMMANDS; don其中前面的name就是个变量名,而且不需要加$,每次循环和中间列表中的值有关,中间的列表可以使用花括号来表示指定范围,也可以使用一些命令来生成列表,但是需要加$(),要把前面的变量名和后面的循环体连接起来。例如:

??[[email?protected] data]#touch f1,txt

??[[email?protected] data]#touch f2.txt

??[[email?protected] data]#touch f3.txt

??[[email?protected] data]#for file in *.txt;do echo

??filename is $file;done

??filename is f2.txt

??filename is f3.txt

??其中的通配符来表示的话是不需要加双引号的。

??但是如果要在脚本里面引用文件可以使用命令cat filename,前提是命令需要反向单引号。例如:

??#!/bin/bash

??for USER in ` cat userlist.txt ;do

????useradd $USER

??done

??如果说数据量比较大的话可以实行并行运行,使用{}括起来然后最后加&,例如:

??#!/bin/bash

??NETID=172.16.128

??for HOSTID in {1..245};do

???? {

????if ping -c1 -w1 $NETID.$HOSTID &> /dev/null;then

??????echo $NETID.$HOSTID is up | tee -a hostlist.txt

????fi

???? } &

??done

??wait

??for也是可以套嵌的,例如:

??#!/bin/bash

??for i in {1..10};do

????for j in {1..10};do

??????echo -e ‘*c‘

????done

????echo

??done

关于for还可以使用(( ))里面只要不是数字就认为是变量,例如:

??#!/bin/bash

??n=10

??for ((sum=0,i=1;i<=n;i++));do

????let sum+=i

??done

??echo sum=$sum

??像continue只是临时结束一次循环,并不影响大循环。例如:

??#!/bin/bash

??for ((i=0;i<10;i++));do

???? if [ $i -eq 5 ];then

????continue

???? fi

????echo i=$i

??done

??如果说确定终止循环可以使用break,但是并不是退出脚本,只是退出循环而已,退出脚本可以使用exit。例如:

??#!/bin/bash

??for ((i=0;i<10;i++));do

????if [ $i -eq 5 ];then

??????break

????fi

????echo i=$i

??done

??这个例子就是打印到4,5以后就不再循环了,但是不会整个脚本的结束,以后的脚本还会继续运行。

??shift可以接连执行,例如创建不同用户吧:

??#!/bin/bash

??while [ "$1" ];do

???? useradd $1

???? echo user:$1 is created

????shift

??done

??echo finish

??这个脚本如果执行的话,后面跟几个用户名都可以创建。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读