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

9月15日作业

时间:2015-09-23 19:33:32      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:shell 脚本

1、写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型;

    #!/bin/bash
  
    path="/tmp/a/b/fang"
    if [ -e $path ]; then
    	echo "$path exists!"
    	file $path
    else
    	mkdir -p $path
    fi


2、写一个脚本,完成如下功能;判断给定的两个数值,孰大孰小;给定数值的方法:脚本参数,命令交互;

    #!/bin/bash
    
    read -p "Please input two number: " -t10 num1 num2
    
    if [ -z "$num1" ]&&[ -z "$num2" ]; then
    	echo "Please give two numbers."
    	exit 1
    fi
    
    if [ $num1 -ge $num2 ]; then
    	echo "MAX:$num1 MIN:$num2"
    else
    	echo "MAX:$num2 MIN:$num1"
    fi


3、求100以内所有奇数之和

方法1:

    #!/bin/bash
    
    declare -i sum=0

    for i in $(seq 0 2 100); do
        sum=$(($sum+$i))
    done

    echo "Even sum: $sum."

方法2:

    #!/bin/bash

    declare -i sum=0

    for i in {1..100}; do
	if [ $[$i%2] -eq 0 ]; then
		sum=$[$sum+$i]
	fi
    done

    echo "Even sum: $sum."

方法3:

    #!/bin/bash
    
    declare -i sum=0
    add(){
    	for i in $(seq 0 2 100); do
    		sum=$[$sum+i]
    	done
    }
    add
    echo "The sum is $sum."


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

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

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

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

    #!/bin/bash
    
    text1=sedawkprocess0915.txt
    text2=sedawkprocess0917.txt
    
    tj1=`grep ‘^$‘ sedawkprocess0915.txt | wc -l`
    tj2=`grep ‘^$‘ sedawkprocess0917.txt | wc -l`
    
    total1=`cat sedawkprocess0915.txt | wc -l`
    total2=`cat sedawkprocess0917.txt | wc -l`
    
    if [ $tj1 -gt $tj2 ]; then
    	echo "$text1 total blank lines are $tj1"
    else
    	echo "$text2 total blank lines are $tj2"
    fi
    	
    if [ $total1 -gt $total2 ]; then
    	echo "$text1 total lines are $total1"
    else
    	echo "$text2 total lines are $total2"
    fi


5、写一个脚本

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

            (2) 判断:

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

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

    #!/bin/bash
    
    read -p  "Please input a string: " -t10 string
    
    if [ $string == "quit" ]; then
    	exit 0
    else
    	echo "This string is $string."
    	
    fi


6、写一个脚本,打印2^n表;n等于一个用户输入的值;

    #!/bin/bash

    read -p "Please input a number: " -t10 number
    i=0
    while [ $i -lt $number ];do
    	i=$[$i+1]
    	echo -n -e "2^$i=$[2**$i]"
    	echo
    done


7、写一个脚本,写这么几个函数:函数1、实现给定的两个数值的之和;函数2、取给定两个数值的最大公约数;函数3、取给定两个数值的最小公倍数;关于函数的选定、两个数值的大小都将通过交互式输入来提供。

    #!/bin/bash

    if [[ $# -le 2 ]];then
      echo "plz input two number and use space to isolation them!"
    fi
    
    function add() {
    	echo "The two num sum:$1+$2=`expr $1 + $2`"
    }
    add $1 $2
    
    declare -i big
    declare -i small
    if [ $1 -gt $2 ];then
        big=$1
        small=$2
    else
        big=$2
        small=$1
    fi
    
    gcdlcm(){
    	i=1      #定义一个循环变量
    	GCD=1    #定义最大公约数
    	LCM=1    #定义最小公倍数
    	btmp=1   #定义用户输入的较大的一个变量除以循环变量的值
    	stmp=1   #定义用户输入的较小的一个变量除以循环变量的值
    	  while [ $i -le $small ];do     #定义循环条件,循环变量小于或等于用户输入的较小的变量
    		btmp=`expr $big % $i`      #求值
    		stmp=`expr $small % $i`      #求值
    		  if [ $btmp -eq 0 ];then  #判断值得余数是否为0
    			 if [ $stmp -eq 0 ];then  #同上
    				gcd=$i    #如果值得余数为0,则获取最大公约数的值
    			 fi   #判断结束
    		  fi
    	   i=`expr $i + 1`   #i变量循环,直到i等于用户输入的较小的数为止退出循环。
    	done   #当i=$sma,退出循环
    	lcm=`expr $small / $gcd`   #根据最小公倍数公式求值
    	lcm=`expr $lcm \* $big`  #同上,求最小公倍数公式为:lcm=$sma*$big%gcd
    	echo "lcm:$lcm"    #输出lcm值
    	echo "gcd:$gcd"    #输出gcd值
    }


9月15日作业

标签:shell 脚本

原文地址:http://2280627.blog.51cto.com/2270627/1697556

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