linux上机练习十
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机练习十
完成下列的脚本练习。
1、请编写一个脚本,其功能是将当前用户的根目录下的work目录打包为名为“user’s-workdir-in-YYMMDD”的tar包
要求:i)若该目录不存在,显示“dir not exist”
ii)若该文件不是目录类型,显示“work is a type”,此处的type为文件类型
#!/bin/bash
[ -e /work ] && tar -cvf "User's-workdir-in-YYMMDD.tar" /work || echo "dir not exist"
declare filetype=""
[ -f /work ] && filetype="常规文件"
[ -d /work ] && filetype="目录文件"
[ -b /work ] && filetype="块设备文件"
[ -c /work ] && filetype="字符设备"
[ -S /work ] && filetype="套接字文件"
[ -p /work ] && filetype="FIFO(管道)文件"
[ -L /work ] && filetype="连接文件"
[ "$filetype" != "" ] && echo "work is a $filetype"
2、编写一个脚本,其中包含一个打印函数,用于将多次输入的字符组合为一个字符串
要求:i)使用函数实现新值的输出
ii)使用循环语句完成多个字符的输入,直到输入字符串EOF才完成字符串的累加#!/bin/bash
function add()
{
str="$str"$input
echo $str
}
read -p "请输入一个字符串或者输入EOF结束本次操作:" input
declare str
while [ "$input" != "EOF" ]
do
add
read -p "请输入一个字符串或者输入EOF结束本次操作" input
done
3、自我练习:设计一个运算器,用来完成下列功能
i)四则运算:符号使用+、-、*、/
ii)逻辑位运算:符号使用&、|、~
iii)乘方运算:0次、1次、2次、3次、4次、5次幂,幂级和底数均由用户给出
#!/bin/bash
read -p “选择一种运算(输入数字):1.四则运算2.逻辑位运算3.幂运算:” n
if [ “$n” == “1” ];
then
read -p "请输入第一个数:" n1
read -p "请输入一个操作运算符(+、-、*、/):" fuhao
read -p "请输入第二个数:" n2
declare -i y
let “y=$n1$fuhao$n2”
echo “$n1$fuhao$n2=$y”
fi
elif [ “$n” == “2” ];
then
read -p "请输入位运算第一个数:" w1
read -p "请输入一个操作运算符(&,|,~):" fuhao2
read -p "请输入位运算第二个数:" w2
declare yy
if [ "$fuhao2" == "&" ];then
let “yy=$w1&$w2”
echo "$w1$fuhao2$w2=$yy"
elif [ "$fuhao2" == "|" ];then
let “yy=$w1|$w2”
echo "$w1$fuhao2$w2=$yy"
elif [ "$fuhao" == "~" ];then
let “yy=$w1~$w2”
echo "$w1$fuhao2$w2=$yy"
else
echo "您的运算符输入错误"
fi
elif [ “$n” == “3” ];
then
read -p "请输入幂级:" m1
read -p "请输入幂底数:" m2
declare yyy
let “yyy=$m1**$m2”
echo “ $m2的$m1次幂为$yyy”
fi
4、自我练习:判断两个给定文件的新旧程度
要求:i)用户输入两个文件的名称
ii)分别判断这两个文件是否存在
iii)判断这两个文件的类型是否相同
iv)判断这两个文件的拥有者操作权限是否相同
v)若这两个文件都存在,且类型和操作权限都相等,则将较新的文件复制到目录/tmp 中,若两者的时间相同,则不做复制操作
#!/bin/bash
type1=""
type2=""
right1=""
right2=""
read -p "请输入第一个文件的路径:" f1
if [ ! -e "$f1" ];
then
echo "$f1不存在,请检查后重试"
fi
read -p "请输入第二个文件的路径:" f2
if [ ! -e "$f2" ]
then
echo "$f2不存在,请检查后重试"
fi
[ -f "$f1" ] && type1="regulare file"
[ -d "$f1" ] && type1="directory"
[ -r "$f1" ] && right1="$right1"r
[ -w "$f1" ] && right1="$right1"w
[ -x "$f1" ] && right1="$right1"x
echo "文件1的类型是$type1"
echo "文件1的权限是$right1"
[ -f "$f2" ] && type2="regulare file"
[ -d "$f2" ] && type2="directory"
[ -r "$f2" ] && right2="$right2"r
[ -w "$f2" ] && right2="$right2"w
[ -x "$f2" ] && right2="$right2"x
echo "文件2的类型是$type2"
echo "文件2的权限是$right2"
[ "$type1" == "$type2" ] && echo "$f1和$f2的文件类型相同" || echo "$f1和$f2的文件类型不同"
[ "$right1" == "$right2" ] && echo "$f1和$f2的文件权限相同" || echo "$f1和$f2的文件权限不同"
if [ "$type1" == "$type2" -a "$right1" == "$right2" ];
then
if [ "$f1" -nt "$f2" ];
then
echo "将$f1复制到/tmp中"
cp -r "$f1" "/tmp/$f1"
elif [ "$f1" -ot "$f2" ];
then
echo "将$f2复制到/tmp中"
cp -r "$f2" "/tmp/$f2"
fi