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

Linux下shell编程实例

2016-03-04 13:27 495 查看
1. 推断一文件是不是块或字符设备文件。假设是将其复制到 /dev 文件夹下

read -p "input a file:" filename

if [ -b $filename -o -c $filename ]

then

cp $filename /dev/

fi

2.编写一个脚本。进行简单的减法运算。要求提示输入变量

#!/bin/bash

read -p "input a number:" num1

read -p "input another number:" num2

let "num3=num1-num2"

echo $num3

3.把某个文件夹下的文件扩展名改为bat,再以时间为文件名称压缩打包存放到某个文件夹。

#!/bin/bash

for file in $(ls $1)

do

new_file=${file%.*}.bat

mv ./$1/$file ./$1/$new_file

tmp=$(date +%y)

tar cvf ./$tmp.tar ./$1

done

4.推断一个数是不是完数。

打印出1-1000之间的完数。

完数就是约数的和等于自身2倍的数。(6,28,496)

#!/bin/bash

sub()

{

i=1;

sum=0;

while [ $i -le $num ]

do

let "m=num%i"

if [ $m -eq 0 ]

then

let "sum=sum+i"

fi

let "i=i+1"

done

let "a=2*num"

if [ $a -eq $sum ]

then

echo $num

fi

}

num=1

while [ $num -le 1000 ]

do

sub

let "num = num+1"

done

5.在某个目录下查找含有指定字符串的文件

#!/bin/bash

for file in $(ls $2)

do

bname=$(grep -l $1 $2/$file)

basename $bname

done

6.加入一个新组为class1,然后加入属于这个组的30个用户,username的形式为stdxx,当中xx从01到30。

#!/bin/bash

groupadd class1

for i in {9901..9930}

do

xx=$(echo $i | sed 's/99//');

useradd -g class1 std$xx -p ""

done

7.设计一个Shell程序。在/userdata文件夹下建立50个文件夹。即user1~user50,并设置每一个文件夹的权限,其\中其它用户的权限为:读。文件全部者的权限为:读、写、运行;文件全部者所在组的权限为:读、运行。

#!/bin/bash

for ((i=1;i<=50;i++))

do

mkdir -p /usrdata/user$i

cd /usrdata

chmod 754 user$i

done

8. 写一个脚本,利用循环计算10的阶乘

#!/bin/sh

factorial=1

for a in `seq 1 10`

do

factorial=` expr $factorial \* $a `

done

echo "10! = $factorial"

9.删除当前文件夹下大小为0的文件

#/bin/bash

for filename in `ls`

do

if test -d $filename

then b=0

else

a=$(ls -l $filename | awk '{ print $5 }')

if test $a -eq 0

then rm $filename

fi

fi

done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: