9月13日课程作业(练习)

一、作业(练习)内容:

1、描述shell程序的运行原理(可附带必要的图形说明);

2、总结shell编程中所涉及到的所有知识点(如:变量、语法、命令状态等等等,要带图的哟);

3、总结课程所讲的所有循环语句、条件判断的使用方法及其相关示例;(if (jpg|png is not exist);echo ”You say a XX“)

4、总结文本处理工具sed及awk的用法;(必须附带示例)

5、写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;(不要怀疑,就是这么简单)

#!/bin/bash
#判断某路径是否存在,如果存在,显示其内容类型,否则创建与之同名的目录
#给定路径的方法:脚本参数
 if [ $# -lt 1 ];then
        echo "本脚本是用来判断某路径是否存在,请在脚本后输入至少一个路径"
        exit 1
 fi
 for i in $*;do
    if [ -e $i ];then
        echo  "$i已经存在"
        file $i
    else
        mkdir -p $i
        echo "已成功创建目录$i"
        echo -e "$(dirname $i)目录下的所有文件和子目录列表为: \n$(ls `dirname $i`)"
     fi
 done

6、写一个脚本,完成如下功能:

                    判断给定的两个数值,孰大孰小;

                    给定数值的方法:脚本参数,命令交互;(使用read,依然如此简单)

     给定数值的方法:脚本参数

#!/bin/bash
#判断给定的两个数值大小
#给定数值的方法:脚本参数
[ $# -ne 2 ] && echo "本脚本用来判断给定的两个数值大小,请在脚本后输入两个整数" && exit 0
num1=$(echo $1 | grep ‘^[0-9]\+$‘)
num2=$(echo $2 | grep ‘^[0-9]\+$‘)
[ -z $num1 ] && [ -z $num2 ] && echo "$1,$2不是整数" && exit 0
[ -z $num1 ] && echo "$1不是整数" && exit 0
[ -z $num2 ] && echo "$2不是整数" && exit 0
[ $1 -eq $2 ] && echo "输入的两个数相同" && exit 0
[ $1 -gt $2 ] && echo "$1大于$2" && exit 0
[ $1 -lt $2 ] && echo "$1小于$2" && exit 0

给定数值的方法:命令交互

#!bin/bash
#判断给定的两个数值的大小
#给定数值的方法:命令交互
echo "本脚本用来判断给定的两个数值大小"
read -p "请在10秒内输入两个整数: " -t 10 i j
[ -z $i ] && [ -z $j ] && echo "请重新输入两个整数" && exit 0
[ -z $j ] && echo "第二个数为空,请输入两个整数" && exit 0
num1=$(echo $i | grep ‘^[0-9]\+$‘)
num2=$(echo $j | grep ‘^[0-9]\+$‘)
[ -z $num1 ] && [ -z $num2 ] && echo "$i,$j不是整数" && exit 0
[ -z $num1 ] && echo "$i不是整数" && exit 0
[ -z $num2 ] && echo "$j不是整数" && exit 0
[ $i -eq $j ] && echo "输入的两个数相同" && exit 0
[ $i -gt $j ] && echo "$i大于$j" && exit 0
[ $i -lt $j ] && echo "$i小于$j" && exit 0

7、求100以内所有奇数之和(至少用3种方法。是的这是我们的作业^_^)

#!bin/bash
#求100以内所有奇数之和
echo "one表示使用第一种方法求得100以内所有奇数之和"
echo "two表示使用第二种方法求得100以内所有奇数之和"
echo "three表示使用第三种方法求得100以内所有奇数之和"
read -p "请在10秒内输入one|two|three中的任意一个单词: " -t 10 val
[ -z $val ] && echo "请输入one|two|three中任意一个单词" && exit 0
declare -i sum=0
declare -i j=1
case $val in
one)
for i in $(seq 1 2 100);do
    sum=$[$sum+$i]
done
echo "用for循环步进为2的方法求出100以内所有奇数之和为:$sum"
exit 0
;;
two)
for ((i=1;i<=100;i++)); do
   [ $[$i%2] -eq 1 ] && sum=$[$sum+$i]
done
echo "用for循环取2的模为1的方法求出100以内所有奇数之和为:$sum"
exit 0
;;
three)
while [ $j -le 100 ];do
    sum=$[$sum+$j]
   let j+=2
done
echo "用while循环步进为2的方法求出100以内所有奇数之和为:$sum"
exit 0
;;
*)
 echo "输入错误,请选择输入one|two|three中任意一个选项"
exit 0
esac

8、写一个脚本实现如下功能:

           (1) 传递两个文本文件路径给脚本;

           (2) 显示两个文件中空白行数较多的文件及其空白行的个数;

           (3) 显示两个文件中总行数较多的文件及其总行数;

#!bin/bash
#判断文本文件行数的方法
echo "本脚本用来判断给定的两个文本文件行数"
read -p "请在20秒内输入两个文本文件路径:" -t 20 file1 file2
[ -z $file1 ] && [ -z $file2 ] && echo "请输入两个文本文件路径" && exit 0
[ -z $file2 ] && echo "第二个文件路径为空,请输入两个文本文件路径" && exit 0
[ ! -f $file1 ] && [ ! -f $file2 ] && echo "输入的两个文件路径不存在或者不是文本文件,请重新输入" && exit 0
[ ! -f $file1 ] && echo "输入的第一个文件路径不存在或者不是文本文件,请重新输入" && exit 0
[ ! -f $file2 ] && echo "输入的第二个文件路径不存在或者不是文本文件,请重新输入" && exit 0
i=$(grep ‘^$‘ $file1 | wc -l)
j=$(grep ‘^$‘ $file2 | wc -l)
[ $i -eq $j ] && echo -e "$file1文件和$file2文件的空白行数相同 \n 总共有空白行:$i行"  
[ $i -gt $j ] && echo -e "空白行数较多的文件是$file1 \n 有空白行:$i行" 
[ $i -lt $j ] && echo -e "空白行数较多的文件是$file2 \n 有空白行:$j行" 
k=$(wc -l $file1 | cut -d‘ ‘ -f1)
l=$(wc -l $file2 | cut -d‘ ‘ -f1)
[ $k -eq $l ] && echo -e "$file1文件和$file2文件总的行数相同 \n 总共有:$k行"  
[ $k -gt $l ] && echo -e "行数较多的文件是$file1 \n 总共有:$k行" 
[ $k -lt $l ] && echo -e "行数较多的文件是$file2 \n 总共有:$l行"

9、写一个脚本

           (1) 提示用户输入一个字符串;

           (2) 判断:

                          如果输入的是quit,则退出脚本;

                          否则,则显示其输入的字符串内容;

#!/bin/bash
#判用户输入一个字符串
read -p "请在15秒内输入一个字符串:" -t 15 str
[ -z $str ] && echo "请输入一个字符串" && exit 0
[[ $str == ‘quit‘ ]] && echo "已退出" && exit 0 || echo "输入的字符串为:$str"

10、写一个脚本,打印2^n表;n等于一个用户输入的值;(不好意思,我调皮了)

#!/bin/bash
#打印2^n表;n等于一个用户输入的值
k=1
read -p "请在5秒内输入一个整数:" -t 5 var
[ -z $var ] && echo "请输入一个整数" && exit 0
num=$(echo $var | grep "^[0-9]\+$")
[ -z $num ] &&  echo "输入错误,请输入一个整数" && exit 0
for ((i=0;i<=$var;i++));do
           echo   "2^${i}=$k"
         k=$[${k}*2]
done

11、写一个脚本,写这么几个函数:

              函数1、实现给定的两个数值的之和;

              函数2、取给定两个数值的最大公约数;

              函数3、取给定两个数值的最小公倍数;

              关于函数的选定、两个数值的大小都将通过交互式输入来提供。

#!/bin /bash
#函数1实现给定的两个数值的之和;
#函数2、取给定两个数值的最大公约数;
#函数3、取给定两个数值的最小公倍数
#;关于函数的选定、两个数值的大小都将通过交互式输入来提供
read -p "请在7秒内输入两个整数:" -t 7 i j
[ -z $i ] && [ -z $j ] && echo "请重新输入两个整数" && exit 0
[ -z $j ] && echo "第二个数为空,请输入两个整数" && exit 0
num1=$(echo $i | grep ‘^[0-9]\+$‘)
num2=$(echo $j | grep ‘^[0-9]\+$‘)
[ -z $num1 ] && [ -z $num2 ] && echo "输入错误,$i,$j不是整数" && exit 0
[ -z $num1 ] && echo "输入错误,$i不是整数" && exit 0
[ -z $num2 ] && echo "输入错误,$j不是整数" && exit 0
 sum () { 
          Sum=$[${i}+${j}]
            echo "输入的两个数之和为:$Sum"
    }
 max () { 
     if [ $i -eq $2 ];then
             echo "输入的两个数的最大公约数为:$i"
             exit 0
     elif [ $i -gt $j ];then
       for num1 in $(seq $j -1 1);do     
          [ $[$i%$num1] -eq 0 ] && [ $[$j%$num1] -eq 0 ] && echo "输入的两个数的最大公约数为:$num1" && exit 0
      done
     else
       for num2 in $(seq $i -1 1);do
          [ $[$i%$num2] -eq 0 ] && [ $[$j%$num2] -eq 0 ] && echo "输入的两个数的最大公约数为:$num2" && exit 0
        done
      fi
      }
 min () {
     if [ $i -eq $j ];then
           echo "输入的两个数的最小公倍数为:$i" 
           exit 0
     elif [ $i -gt $j ];then
         for num1 in $(seq $i 1 $[$i*$j]);do
            [ $[$num1%$i] -eq 0 ] && [ $[$num1%$j] -eq 0 ] && echo "输入的两个数的最小公倍数为;$num1" && exit 0
         done
     else
         for num2 in $(seq $j 1 $[$i*$j]);do
            [ $[$num2%$i] -eq 0 ] && [ $[$num2%$j] -eq 0 ] && echo "输入的两个数的最小公倍数为;$num2" && exit 0
         done
     fi
    }
echo
echo " sum表示求输入的两个数之和"
echo " max表示求输入的两个数的最大公约数"
echo " min表示求输入的两个数的最小公倍数"
read -p "请在10秒内输入sum|max|min中任意一个单词:" -t 10 str
[ -z $str ] && echo "请输入sum|max|min中任意一个单词" && exit 0
case $str in
sum)
    sum
     ;;
max)
   max
    ;;
min)
   min
    ;;
*)
  echo "输入错误,请输入sum|max|min中任意一个单词"
  exit 0
esac
时间: 2024-10-06 21:29:20

9月13日课程作业(练习)的相关文章

linux运维实战练习-2015年9月13日课程作业(练习)安排

一.作业(练习)内容: 1.描述shell程序的运行原理(可附带必要的图形说明): 2.总结shell编程中所涉及到的所有知识点(如:变量.语法.命令状态等等等,要带图的哟): 3.总结课程所讲的所有循环语句.条件判断的使用方法及其相关示例:(if (jpg|png is not exist):echo "You say a XX") 4.写一个脚本:如果某路径不存在,则将其创建为目录:否则显示其存在,并显示内容类型:(不要怀疑,就是这么简单) 5.写一个脚本,完成如下功能:判断给定的

马哥linux+python&mdash;&mdash;2015年9月13日课程作业

一.作业(练习)内容: 1.描述shell程序的运行原理(可附带必要的图形说明): 什么是shell       shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash.Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称.shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用.用户在提示符下输入的命令都由shell先解释然后传

2015年9月13日课程作业--关于SHELL的问题

1.描述shell程序的运行原理(可附带必要的图形说明): SHELL是一种特殊的程序,官方定义为是和内核的接口,类似于内核的代理人.人类和LINUX系统对话时,需要一个翻译,而shell就是这个翻译.我们用SHELL编辑自己想要执行的一系 列命令后,SHELL可以翻译给系统内核听,然后系统内核执行. 2.总结shell编程中所涉及到的所有知识点(如:变量.语法.命令状态等等等,要带图的哟): //以下实例来自iredmail的安装脚本 tmprootdir="$(dirname $0)&quo

9月13日-9月15日课程作业(练习)

9月13日-9月15日课程作业(练习)   5.写一个脚本:如果某路径不存在,则将其创建为目录:否则显示其存在,并显示内容类型:(不要怀疑,就是这么简单) 1 #!/bin/bash2 #3 #4 if [ $# -ne 1 ];then5 echo "please input one parameter"6 exit 37 fi8 9 if [ -e $1 ];then10 echo $(file $1)11 else12 mkdir -p $113 echo "make

3月7日课程作业 信息化基础知识、信息化系统服务管理

3月7日课程作业  信息化基础知识.信息化系统服务管理 信息化基础知识 1.国家信息化体系要素 a) 信息化技术:是信息化体系六要素的龙头. b) 信息化资源:是国家信息化的核心任务,是国家信息建设取得实效的关键,也是我国信息化的薄弱环节.信息资源开发和利用的程度是衡量国家信息化水平的一个重要标志. c) 信息网络:是信息资源开发利用和信息技术应用的基础.通常将信息网络分为电信网.广播电视网和计算机网络.三网的发展方向将逐步实现三网融合. d) 信息技术和产业:是我国进行信息化建设的基础. e)

2015年8月30日课程作业(练习)

linux运维实战练习-2015年8月30日课程作业(练习)安排 一.作业(练习)内容: 1.总结文本编辑工具vim的使用方法: vim: 全屏幕的编辑器 编辑模式:命令模式 输入模式: 末行模式: 编辑模式 --> 输入模式: i: insert, 在光标所在在位置前可输入内容 a:append,在光标所在在位置后可输入内容 I: 行首,在光标所在在位置行首可输入内容 A:行尾,在光标所在在位置行尾可输入内容 O:在光标所在位置上方新建行,在行首可输入内容 o:new line,在光标所在位置

9月10日课程作业(练习)

linux运维实战练习-2015年9月10日课程作业(练习)安排 一.作业(练习)内容: 1.总结rpm和yum实现程序包的管理功能. (1)相关概念 内核功能:进程管理.内存管理.提供网络协议栈.驱动程序.... 应用程序功能:提供各种各样特定功能,如bash等 程序包的组成部分: 二进制程序:程序包的核心,存储在/bin, /sbin,/ /usr/bin, /usr/sbin等路径下 库文件:共享资源,存储在/lib64, /usr/lib64等路径下 配置文件:定义工作属性,存储在/et

linux运维实战练习-2015年9月01日课程作业(练习)

linux运维实战练习-2015年9月01日课程作业(练习)安排 一.作业(练习)内容: 1.复习本次课程所讲的内容 2.总结整理磁盘管理及文件系统管理中设计的各种命令的使用,并附注一定的示例: 在Linux中,一块磁盘能被使用(可以被访问.被写入.被存储)要有以下三个步骤: (1)进行磁盘分区,及创建分区 (2)创建文件系统 (3)挂载文件系统 (1)磁盘分区 创建分区的命令: fdisk, parted, sfdisk fdisk:最多支持在一块硬盘上的15个分区:fdisk提供了一个交互式

linux运维实战练习-2015年9月5日课程作业(任务计划使用和练习)-JY1506402-19+liuhui880818

作业目标:linux运维实战练习-2015年9月5日课程作业(练习)安排 作业环境:CentOS 6.7/7 x86_64 一.作业(练习)内容: 1.总结Linux系统上的任务计划(at.crontab)的详细使用方法: 2.每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD: 3.每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-