Linux下shell編程實例


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




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM