• 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=$1
    for ((i=1; 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 +2|tr -s ' ' |cut -d' ' -f1)
    do
    arp -d $i
    done

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

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

    方法2:

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

    练习3:倒数五秒:

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

    方法2:

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

    练习4:批量添加用户:

    #!/bin/bash
    for i in $(cat /root/users.txt) --》从列表文件读取文件名
    do
    useradd $i
    echo "123456" | 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-1]} > 10000 ))
    then
    userdel -r ${u_name[i-1]}&&echo "${u_name[i-1]} delete ok"
    fi
    done

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

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


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

    -

  • 相关阅读:
    Android压缩图片到100K以下并保持不失真的高效方法
    Android 动画学习笔记
    JAVA jdbc连接Mysql
    android 在myeclipse中查看源码
    Intent用法总结
    Android中加载数据库到data/data下的当前包中
    Android Paint类介绍
    经典常用SQL语句大全
    android 语音识别技术
    Insert multi user or more than one user in SharePoint list Person or Group field
  • 原文地址:https://www.cnblogs.com/Ph-one/p/10913769.html
Copyright © 2020-2023  润新知