zoukankan      html  css  js  c++  java
  • Shell 实践、常用脚本

    (1)计算1-100的和。

    #!/bin/bash
    n=0
    for i in `seq 1 100`
    do
    n=$[$i+$n]
    done
    echo $n
    View Code

    (2)输一个数字,然后计算出1到数字的和,要求如果输入数字小于1,则重新输入,知道输入正确为止。

    n='abc'
    
    if_num1() {
    m=`echo $1|sed 's/[0-9]//g'`
    if [  -z $m ] && [ $n -gt 1 ]
    then
    return 0
    else
    return 1
    fi
    }
    
    while ! if_num1 $n
    do
    read -p "num: " n
    done
    a=0
    
    
    for i in `seq 1 $n`
    do
    a=$[$n+$i]
    done
    echo $a
    View Code

    (3)把root目录下所有目录(只需要一级)拷贝到/tmp/目录下。

    cd /root/
    for i in `ls `
    do
    if [ -f $i ]
    then
    cp -rv $i /tmp/
    fi
    done
    View Code
    find /root/ -maxdepth 1 –type d
    View Code

    (4)批量建立用户user_00,user_01..,user_100并且所有用户属于users组。

    for i in `seq -w 0 100|sed 's/^0//g'`
    do
    useradd -g users user_$i
    done
    View Code
    seq –f “%02q” 0 100
    View Code

    (5)截取文件x.txt中包含关键字,‘root’的行钟的第二列用“:”号分割然后把截取的数字排序,然后打印出次数超过10次的列。

    #!/bin/bash
    a_1=`cat /xiangsikai/li/1.txt | grep root |uniq -c|awk '$1>10'`
    echo "$a_1"
    View Code

    (6)输入一个IP不能大于255。不能小于0。

    #!/bin/bash
    checkip() {
    if echo $1 | egrep -q '^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$' ;then
    a=`echo $1 | awk -F. '{print $1}'`
    b=`echo $1 | awk -F. '{print $2}'`
    c=`echo $1 | awk -F. '{print $3}'`
    d=`echo $1 | awk -F. '{print $4}'`
    
    for n in $a $b $c $d;do
    if [ $n -ge 255 ] || [ $n -le 0 ];then
    echo "no of zhe IP >255"
    return 2
    fi
    done
    else
            echo "no no no !!! 192.168.1.1"
    return 1
    fi
    }
    
    rs=1
    while [ $rs -gt 0 ];do
    read -p "IP: " ip
    checkip $ip
    rs=`echo $?`
    done
    echo "IP is right!"
    View Code

    (7).写一个脚本实现把一个目录下所有文件(不包括目录)全部在文件后面加一个.bak。

    命令:cd /xiangsikai/li/
    
    for i in `ls`
    do
    if [  -f $i ];then
    mv $i $i.bak
    fi
    done
    View Code
    注:还可以用 find /xiangsikai/li/ -type f 
    View Code

    (8)写一个文件将当前目录下大于100k的文件移动到目录下。

    #!/bin/bash
    for i in `find /xiangsikai/li/ -type f -size +10k`
    do
    mv $i /xiangsikai/shell/ti/
    done
    View Code

    (9)写一个脚本获取本机的HOSTNAME,IP,DNS。

    #!/bin/bash
    host=`hostname`
    echo "HOSTNAME:$host"
    
    ip_1=`ifconfig eth0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'`
    echo "eth0:$ip_1"
    
    dns=`cat /etc/resolv.conf | grep "name" |awk '{print $2}'`
    echo "DNS:$dns"
    View Code

    (10)写两个脚本验证break和continue再循环中的作用。

    for i in `seq 1 5`
    echo $i
    do
    if [ $i -eq 3]
    then
    break
    fi
    echo $i
    done
    注:break改为continue。
    View Code
  • 相关阅读:
    开源项目记录
    Linux的磁盘分区(一)
    Linux下的用户权限
    HeapSort 堆排序
    git参考手册
    SGU 分类
    20130704
    七月三日

    20130629
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8289746.html
Copyright © 2011-2022 走看看