您的位置:首页 > 运维架构 > Shell

Shell编程实例

2015-11-23 11:49 591 查看
整理了几道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 "\n"
done

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

时间的操作一般通过时间戳来实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: