编写一个Shell程序,命名为FinalTest.sh完成如下功能

编写一个Shell程序,命名为FinalTest.sh完成如下功能:(1)编写一个函数实现文件相关的操作copyfiles(){①判断目录文件dir1和dir2是否存在,... 编写一个Shell程序,命名为FinalTest.sh完成如下功能:
(1) 编写一个函数实现文件相关的操作
copyfiles()
{
① 判断目录文件dir1和dir2是否存在,如果存在则将这两个目录删除
② 创建目录文件dir1和dir2
③ 创建普通文件file1、file2、file3、file4
④ 将file1、file2、file3、file4四个文件移动到目录dir1中
⑤ 利用for循环将dir1下的所有文件拷贝到dir2下,并要求利用#?内部变量来判断文件拷贝是否失败
}
(2) 编写一个函数实现求两个数的最小公倍数
dividend()
{
① 利用echo输出信息“Enter two numbers (Two numbers separated by a space): ”
② 利用read函数接收用户输入的两个数字,并将其读入变量n1和n2中
③ 计算$n1和$n2的最小公倍数,并将结果输出
}
(3) 编写一个函数实现对文件内容的相关操作
利用vim编辑一个文本文件namelist内容如下:

search()
{
① 搜索namelist文件中以”2”结尾的行,并把最终的结果存入文件result中
② 显示result文件的前3行
}
(4) 生成一个菜单列表(select语句)。
菜单列表包括三项:
1) Copyfiles 2) Dividend 3) Search
展开
 我来答
lj84386655
推荐于2018-04-24 · TA获得超过944个赞
知道小有建树答主
回答量:358
采纳率:100%
帮助的人:241万
展开全部
[root@localhost test]# cat FinalTest.sh
#!/bin/bash
function copyfiles()
{
#① 判断目录文件dir1和dir2是否存在,如果存在则将这两个目录删除
if [ -d dir1 ]
then
rm -rf dir1
fi
if [ -d dir2 ]
then
rm -rf dir2
fi
#② 创建目录文件dir1和dir2
mkdir dir1 dir2
#③ 创建普通文件file1、file2、file3、file4
touch file1 file2 file3 file4
#④ 将file1、file2、file3、file4四个文件移动到目录dir1中
mv file* dir1/
#⑤ 利用for循环将dir1下的所有文件拷贝到dir2下,并要求利用#?内部变量来判断文件拷贝是否失败
for i in dir1/*
do
cp $i dir2
if [ $? -ne 0 ]
then
echo $i copy to dir2 error!
fi
done
}
function dividend()
{
#① 利用echo输出信息“Enter two numbers (Two numbers separated by a space): ”
#② 利用read函数接收用户输入的两个数字,并将其读入变量n1和n2中
read -p "Enter two numbers (Two numbers separated by a space):" n1 n2
#③ 计算$n1和$n2的最小公倍数,并将结果输出
for((i=1;;i++))
do
if [ $[$i%$n1] -eq 0 -a $[$i%$n2] -eq 0 ]
then
break
fi
done
echo $i
}
function search()
{
#① 搜索namelist文件中以”2”结尾的行,并把最终的结果存入文件result中
grep "2$" namelist > result
#② 显示result文件的前3行
head -3 result
}
#生成一个菜单列表(select语句)。
#菜单列表包括三项:
#1) Copyfiles 2) Dividend 3) Search
PS3="choose one item: "
select choose in Copyfiles Dividend Search
do
if [ -z $choose ]
then
echo -e "Invalid entry.\n"
continue
elif [ $choose == Copyfiles ]
then
echo ---Copyfiles---
copyfiles
elif [ $choose == "Dividend" ]
then
echo ---Dividend---
dividend
elif [ $choose == "Search" ]
then
echo ---Search---
search
fi
done
chanxueok
2012-12-26 · TA获得超过625个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:75.9万
展开全部
#!/bin/sh

function Copyfiles()
{
if [ -d dir1 ];then
rm -fr dir1
fi
mkdir dir1
if [ -d dir2 ];then
rm -fr dir2
fi
mkdir dir2

touch file1 file2 file3 file4
mv file* dir1

files=`ls dir1`
for file in $files
do
echo $file
cp -a dir1/${file} dir2
done

}

function Dividend()
{
echo "Enter two numbers (Two numbers separated by a space)"

read n1

read n2

num1=$n1

num2=$n2

r=`expr$n1 % $n2`

while [ $r -ne 0 ]

do

n1=$n2

n2=$r

r=`expr$n1 % $n2`

done
#最大公约数
echo"最大公约数是:$n2"

min=`expr$num1 \* $num2 / $n`

echo"最小公倍数是:$min"
}

function Search()
{
grep -v '2$' namelist >> result
head -n 3
}

echo "pleas chose Copyfiles Dividend Search"

read Choice

case $Choice in
"Copyfiles")
Copyfiles
;;
"Dividend")
Dividend
;;
"Search")
Search
;;
esac
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式