作业1:test实现对文件操作
输入一个文件名,判断是否在当前目录下存在, 如果是一个目录,则直接输出是目录
如果存在则判断是否是一个普通文件,如果是普通文件则判断是否具备可读可写可执行权限,如果具备权限,写入hello, 不具备权限,则添加读写执行权限,写入hello,如果是一个链接文件则输出文件的详细信息
#!/bin/bash
read -p "please enter file:" file
if [ -e $file ] #判断输入的文件是否存在
then
if [ -e ./$file ] #判断输入的文件是否在本目录下
then
if [ -d $file ] #如果是目录文件,则输出是目录文件
then
echo dir
fi
fi
if [ -L $file ] #判断是否是链接文件,是则输出它的详细信息
then
echo `ls -lh $file`
elif [ -f $file ]
then
if [ -r $file ] && [ -w $file ] && [ -x $file ]
#判断文件是否具备可读可写可执行权限,具备则写入hello
then
echo hello >> $file
echo `cat $file`
else #不具备则修改权限并写入hello
chmod 777 $file
echo hello >> $file
echo `cat $file`
fi
fi
else
echo no exist #若输入的文件不存在则输出不存在
fi
效果图:
作业2:输入一个数,判断是否是回文数
回文数:12321
#!/bin/bash
read -p "please enter num:" num #提示输入一个数
a=$num #用a来存储输入的数
while [ $a -ne 0 ]
do
sum=$((sum*10+a%10)) #将输入的数各个位上的数字取出来并重新组合
a=$((a/10))
done
if [ $sum -eq $num ] #判断重新组合的数是否与输入的数相等
then
echo num是回文数 #相等是回文数
else
echo num不是回文数 #否则不是
fi
效果图:
作业3:输入n,计算n!
#!/bin/bash
read -p "please enter n:" n #提示输入n
mul=1 #定义变量mul初始化为1
for((i=1;i<=n;i++))
do
mul=$((mul*=i)) #用mul来存储n!
done
echo $n!=$mul #输出n!
效果图:
作业4:图形打印
*
***
*****
*******
#!/bin/bash
read -p "please enter n:" n #提示输入图形打印的行数n
for((i=1;i<=n;i++))
do
for((j=0;j<=n+1-i;j++)) #先打印空格
do
echo -n " "
done
for((j=1;j<=2*i-1;j++))
#再打印图形,因为每一个*比上一个多2,所以循环条件为j<=2*i-1
do
echo -n "*"
done
echo ""
done
效果图:
作业5:使用select in循环数组,arr=(Windows Linux Unix Mac),实现页面的交互
如果是Windows,则输出Windows以打开
如果是Linux,则输出Linux以打开
如果是Unix,则输出Unix以打开
如果是Mac,则输出Mac以打开
其他,提示错误
#!/bin/bash
arr=(Windows Linux Unix Mac) #定义一个数组
select a in ${arr[*]} #将数组元素赋值给变量a
do
case $a in
Windows) #当select语句选择Windows时,提示windows已打开
echo Windows已打开
;; #当select语句选择Linux时,提示Linux已打开
Linux)
echo Linux已打开
;; #当select语句选择Unix时,提示Unix已打开
Unix)
echo Unix已打开
;;
Mac) #当select语句选择Mac时,提示Mac已打开
echo Mac已打开
;;
*) #当select语句选择其它时,提示错误
echo error
;;
esac
done
效果图:
作业6:输入一个数,判断是否是素数
素数:被1和本身整除
#!/bin/bash
read -p "please enter num:" num #提示输入num
count=0 #定义计数器变量并初始化为0
for((i=2;i<num;i++)) #从 2 开始循环到 num本身-1
do
if [ $((num%$i)) -eq 0 ] #若1-num中间有可以被num整除的数
then
((count++)) #则计数器++
fi
done
if [ $count -eq 0 ] #判断计数器的值,为0,则num是素数
then #不为0,则num不是素数
echo prime
else
echo not prime
fi
效果图: