shell 作业

This commit is contained in:
flykhan 2023-08-14 20:13:50 +08:00
parent 52ae50ce5e
commit b205c2c28f
8 changed files with 106 additions and 0 deletions

6
day1/homework/h1.sh Normal file
View File

@ -0,0 +1,6 @@
#!/bin/bash
# 编写一个Shell脚本输出当前日期和时间。
# 【要求】按 “xxxx年xx月xx日 xx时xx分xx秒” 格式输出
echo `date +"%Y年%m月%d日 %H时%M分%S秒"`

11
day1/homework/h2.sh Normal file
View File

@ -0,0 +1,11 @@
#!/bin/bash
# 编写一个Shell脚本计算1到100之间所有3倍数的整数和svi
declare -i svi=0
for (( i=1;i<=100;i++ )); do
if (( i%3==0 )); then
svi+=i
fi
done
echo "svi="$svi

13
day1/homework/h3.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
# 编写一个Shell脚本接受一个文件名作为参数并统计该文件中的行数、单词数和字符数
# 【提示】wc 统计命令
if [ -e $1 ] && [ -f $1 ]; then
echo "文件名:$1"
echo "行数:`wc -l $1 | awk '{print $1}'`"
echo "单词数:`wc -w $1 | awk '{print $1}'`"
echo "字符数:`wc -c $1 | awk '{print $1}'`"
else
echo "文件不存在或者不是一个文件"
fi

13
day1/homework/h4.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
# 编写一个Shell脚本接受一个目录名作为参数并列出该目录下的所有文件和子目录并人性化显示文件的大小
if [ -d $1 ]; then
echo "目录名:$1"
echo "文件列表:"
# 也可以直接写成 ls -lh $1
output=`ls -lh $1`
echo "$output"
else
echo "目录不存在"
fi

14
day1/homework/h5.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
# 编写一个Shell脚本接受一个数字作为参数并判断该数字是奇数还是偶数。
if [ $# -ne 1 ]; then
echo "参数个数不正确"
exit 1
else
if (( $1%2==0)); then
echo "$1 是偶数"
else
echo "$1 是奇数"
fi
fi

11
day1/homework/h6.sh Normal file
View File

@ -0,0 +1,11 @@
#!/bin/bash
# 编写一个Shell脚本接受一个字符串作为参数并将该字符串逆序输出。
# 【提示】 echo "abc"|rev
if [ $# -ne 1 ]; then
echo "请提供一个字符串作为参数"
exit 1
fi
echo "$1"|rev

14
day1/homework/h7.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
# 编写一个Shell脚本接受一个文件路径作为参数并检查该文件是否存在。如果存在则输出 "文件名和文件大小",否则输出 "File does not exist."
# 方法一
if [ -e $1 ]; then
output=`ls -lh $1 | awk '{print $5}'`
echo "文件名: $1, 文件大小: $output"
else
echo "File does not exist."
fi
# 方法二
[ -e $1 ] && echo "文件名: $1, 文件大小: `ls -lh $1 | awk '{print $5}'`" || echo "File does not exist."

24
day1/homework/h8.sh Normal file
View File

@ -0,0 +1,24 @@
#!/bin/bash
# 编写一个Shell脚本接受一个目录名作为参数将目录中所有文件打包成xx.tar.bz2到它的父级目录然后再删除该目录及其所有子目录和文件。
if [ $# -ne 1 ]; then
echo "请提供目录参数"
exit 1
fi
dir=$1
# 获取父级目录
father_dir=`dirname $dir`
# 获取目录名
dir_name=`basename $dir`
# 打包目录中所有文件
tar -jcvf $father_dir/$dir_name.tar.bz2 $dir
# 判断是否打包成功
if [ $? -eq 0 ];then
# 删除目录
rm -rf $dir
echo "已删除目录 $dir"
else
echo "打包失败"
fi