码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-09-26 01:55:44      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:程序   课程   知识点   等等等   

一、作业(练习)内容:

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


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

标签:程序   课程   知识点   等等等   

原文地址:http://yunweidiandian.blog.51cto.com/4563709/1698309

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!