linux上机练习十

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档