有趣的bash脚本

1、编写脚本/root/bin/createuser.sh,实现如下功能:使 用一个用户名做为参数,如果指定参数的用户存在,就显示 其存在,否则添加之;显示添加的用户的id号等信息

#!/bin/bash
read -p "Please input username: " n
if id $n &> /dev/null;then
    echo "The user is exited!"
else 
    useradd $n
    id $n
fi

2、编写脚本/root/bin/yesorno.sh,提示用户输入yes或no, 并判断用户输入的是yes还是no,或是其它信息 

     

#!/bin/bash
read -p "please input yes or no " yon
case $yon in
Y|y|yes|YES|yEs|yeS|YES|YEs|Yes)
    echo "your food is THE PEOPLE OF FUJIAN"
    ;;
N|n|no|NO)
    echo "your food is noodles"
    ;;
*)
    echo "Please input right pattern or GET OUT!"
    ;;
esac

3、编写脚本/root/bin/filetype.sh,判断用户输入文件路径 ,显示其文件类型(普通,目录,链接,其它文件类型) 

    

read -p "Please input the filepath: " f
if [ ! -e $f ];then
    echo "the file is not exited,please input the right filepath" && exit 
elif [ -f $f ];then
    echo "the file is regular file"
elif [ -d $f ];then
    echo "the file is directory file" 
elif [ -l $f ];then
    echo "the file is link file"  
else 
    echo "the file is other type"
fi

4、编写脚本/root/bin/checkint.sh,判断用户输入的参数是 否为正整数

#!/bin/bash
read -p "Please input the number: " n
if [[ "$n" =~ ^[0-9]+$ ]];then
    echo the input is a  postive integer 
else 
    echo the input is not a postive integer
fi

>###以下皆用for语句实现

5、判断/var/目录下所有文件的类型

     

#!/bin/bash
for type in  /var/* ;do
    if [ -h $type -o -L $type ];then
        echo "the $type is a link file"
    elif [ -f $type ];then 
       echo "the $type is a reguler file"
    elif [ -d $type ];then
       echo "the $type is a dir file"
    elif [ -b $type ];then
       echo "the $type is a block file"
    elif [ -c $type ];then
       echo "the $type is a character file"
    elif [ -p $type ];then
       echo "the $type is a pipe file"  
    else 
       echo "the $type is other file"
    fi
done
wait

6、添加10个用户user1-user10,密码为8位随机字符

#!/bin/bash
for uid in {1..10};do
    if id user$uid &> /dev/null;then 
        echo the user$uid is exited
    else
       useradd  user$uid 
       passwd=`openssl rand -base64 6`
       echo "user$uid:$passwd" >> /app/user.log
       echo $passwd | passwd --stdin user$uid > /dev/null && echo user$uid is created Successfully!!! 
    fi
done

7、/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件 ;分别读取每个文件,以K开头的输出为文件加stop,以S开头的输 出为文件名加start,如K34filename stop  S66filename start

    

 #!/bin/bash
for c in /etc/rc.d/rc3.d/* ;do
    n=`echo $c | sed -r 's@(^/.*/)([^/].*/?)@\2@'`
    if [[ "$n" =~ "^K"]];then
        mv /etc/rc.d/rc3.d/"$n" /etc/rc.d/rc3.d/"$n"stop
    elif [[ "$n" =~ "^S"]];then
        mv /etc/rc.d/rc3.d/"$n" /etc/rc.d/rc3.d/"$n"start
    fi
done

8、编写脚本,提示输入正整数n的值,计算1+2+…+n的总和

     

#!/bin/bash
read -p "Please input the number: " n
    if [[ "$n" =~ ^[0-9]+$ ]] ; then
        sum=0
        for n in `seq $n`;do
            let sum=sum+n
        done
        echo the sumnumber is $sum
     else
        echo "Please input the right number!"
     fi

9、计算100以内所有能被3整除的整数之和

     

#!/bin/bash
sum=0
m=3
for n in `seq 100`;do
    let a=n%m
    if [ $a -eq 0 ];then 
        let sum=sum+n
    fi
done
echo $sum

10、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入 的网段中主机在线状态 

     

#!/bin/bash
read -p "Please input IP: " ip
if [[ "$ip" =~ ([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3} ]];then
    a=`echo $ip | cut -d. -f1-3`
    for b in {0..254};do
        {
        if ping -c1 -W1 $a.$b &> /dev/null;then
            echo $a.$b is up!
        fi
        }&
    done
else
    echo please input the right IP!
fi
wait

11、打印九九乘法表

    #!/bin/bash
for a in {1..9};do
for b in seq $a;do
let c=ab
echo -n “$b
$a=$c
done
echo
done

12、在/testdir目录下创建10个html文件,文件名格式为数字N(从 1到10)加随机8个字母,如:1AbCdeFgH.html 

     

#!/bin/bash
if [ ! -d /testdir ];then
    mkdir /testdir/ &> /dev/null
fi
for n in {1..10};do
    for a in `cat /dev/urandom |tr -dc "a-zA-Z"|head -c 8`;do
        touch /testdir/$n$a.html
    done
    echo $n$a.html is already created!
done

13、打印等腰三角形

     

#!/bin/bash
read -p "请输出层数:" L
if [[ "$L" =~ ^[0-9]+$ ]];then
    for k in `seq $L`;do
        for a in `seq $[$L-$k]`;do
            echo -n " "
        done
        for b in `seq $[$k*2-1]`;do
            echo -en "\033[3$Yan;5m❄\033[0m"
        done
        echo
    done
else 
    echo Please input the number!
fi

14、打印国际象棋(4格,用while实现)

 

 #!/bin/bash
k=0
while [ $k -lt 4 ];do
    l=0
    while [ $l -lt 4 ];do
       echo -ne "\033[41m    \033[0m"
       echo -ne "\033[43m    \033[0m"
       let l++
    done
    echo
    l=0
    while [ $l -lt 4 ];do
       echo -ne "\033[41m    \033[0m"
       echo -ne "\033[43m    \033[0m"
       let l++                                                          
    done
    echo
    l=0
    while [ $l -lt 4 ];do
       echo -ne "\033[43m    \033[0m"
       echo -ne "\033[41m    \033[0m"
       let l++
    done
    echo
    l=0
    while [ $l -lt 4 ];do 
       echo -ne "\033[43m    \033[0m"
       echo -ne "\033[41m    \033[0m"
       let l++                                                          
   done
   echo
let k++
done

原创文章,作者:OscaoChaser,如若转载,请注明出处:http://www.178linux.com/85329

(1)
OscaoChaserOscaoChaser
上一篇 2017-08-24
下一篇 2017-08-26

相关推荐

  • vsftpd、nfs、samba

    I/O:网络、存储 存储: DAS:Direct Attached Storage 接口类型:“block”;只有块设备才能够进行分区格式化 设备:SATA,SAS;IDE,SCSI;USB; NAS:Network Attached Storage(网络附加存储) 接口类型:”file” 协议:CIFS(samba), NFS(Ne…

    Linux干货 2017-06-13
  • N25-第六周作业

    第6周作业 — 请详细总结vim编辑器的使用并完成以下练习题 vim是模式化的全屏文本编辑器。vim分为三种模式:分别是编辑模式;输入模式;末行模式; 打开文件的方式有:vim +# FILE打开文件FILE并把光标定位到#行的行首;vim +/PATTERN FILE打开文件并让光标处于第一个被PATTERN匹配到的行的行首。(支持正则表达式)…

    Linux干货 2017-02-22
  • 马哥教育网络班22期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 # fdisk /dev/sdb <<EOF> n> p> 1> &g…

    Linux干货 2016-11-28
  • M20-1 8月3号 ACL访问控制列表

    一、acl简介:   access control list,用于实现灵活的权限管理,除了文件的所有者,所属组和其他人,可以对更多的用户设置权限,而acl生效的顺序是所有者,自定义用户组,自定义组,其他人。 二、ACL的设置技巧:   getfacl:取得某个文件/目录的ACL设置项目   setfacl:设置某个目录/文件的A…

    Linux干货 2016-08-08
  • 正则表达式入门

    正则表达式入门 谈到正则表达式,我们就得先了解一下POSIX。POSIX的全称是Portable Operating System Interface foruniX,它由一系列规范构成,定义了UNIX,linux操作系统应当支持的功能,它定义了BRE(Basic Regular Expression,基本型正则表达式)和ERE(Extended Regul…

    2017-07-29
  • Linux学习总结02—Linux的操作系统发展史(原创)

       我们都知道,在美国宾夕法尼亚大学,有那么一种计算机,叫ENIAC,这种机器耗电量是非常大,而且主机也是庞大,它诞生于1946年的2月14日的情人节,确实有纪念意义,就算是约炮也是拿着智能手机先摇一摇,好看就勾搭,不好看的就拉黑,这台计算机可并不是造福人类的,只是计算数据,我想,当时的情况是这样,在这台计算机没有出世之前,那帮工程师们…

    Linux干货 2016-10-29