编写一个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 展开
(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 展开
2个回答
展开全部
[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
#!/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
展开全部
#!/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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询