Shell编程实例

整理了几道Shell编程实例,针对新手!

1. 在/home目录中创建一百个目录,目录名称依次为a1……a100. 

实例1 


for ((i=1;i<=100;i++))
do
    mkdir "/home/a"$i
done
实例2,还可以写的高级一点




for ((i=1;i<=100;i++))
do
    if [ ! -e "/home/a"$i ]
    then    
        mkdir "/home/a"$i
    else
        echo "/home/a"$i"exist!"
    fi  
done






2.  编写一个脚本,自动将用户主目录下所有小于5KB的文件打包成XX.tar.gz.(提示:用ls,grep,find等命令,文件一般指普通文件) 

find实现 


 find ./ -type f -size +5120c |xargs tar -czvf xx.tar.gz
ls,grep实现




ls -l | grep ^- | awk '{if($5<5120)print $9}' | xargs tar -czf tar.gz








3.写一个程序,可以将/et/passwd的第一列取出,而且每一列都以一行字符串“the 1 account is “root””来显示 


#!/bin/bash
i=1
while read line
do
    name=`echo $line|cut -d ":" -f1`
    echo "the "$i" account is "$name
    i=$((i+1))
done < /etc/passwd
只取第一行的话一条命令就够了




cat /etc/passwd | cut -d ":" -f1





4. 编写一个程序,他的作用是先查看一下/root/test/logical这个名称是否存在,若不存在,则创建一个文件。使用touch来创建,创建完成后离开;如果存在的话,判断该名称是否为文件,若为文件则将之删除后新建一个目录。文件名为loglical,之后离开;如果存在的话,而且该名称为目录,则删除此目录。 


#!/bin/bash
if [ -e "/root/work/logical" ]
then
    if [ -f "/root/work/logical" ]
    then 
        rm "/root/work/logical" 
        mkdir "/root/work/logical" 
    elif [ -d "/root/work/logical"  ]
    then    
        rm -rf "/root/work/logical"
    fi  
else
    touch "/root/work/logical" 
fi
    



5.编写一个shell脚本,从键盘读入10个数,显示最大值和最小值。 

难点整数的比较和字符串比较符的区分 


min=0
max=0;
var=0
for((i=0;i<10;i++))
do
    read var 
    if [ $i == 0 ] 
    then
        min=$var;
        max=$var;
    else
        if [ $min -gt $var ]
        then
            min=$var;
        fi  
        if [ $max -lt $var ]
        then max=$var;
        fi  
    fi; 
    
done
echo $max
echo $min





6.编写一个脚本,打印任何数的乘法表。如输入3则打印
  1*1=1
  2*1=2 2*2=4

  3*1=3 3*2=6 3*3=9 

难点:echo 不换行输出 


var=0
read var;
for((i=1;i<=var;i++))
do
    for((j=1;j<=i;j++))
    do  
        echo -ne "$i*$j="$((i*j))" "
    done
    echo -ne "
"
done                                                                                                          





7.编写一个脚本,输入自己的生日时间(YYYYMMDD),计算还有多少天多少个小时是自己的生日。

时间的操作一般通过时间戳来实现 
原文地址:https://www.cnblogs.com/zendu/p/4987940.html