9月15日做業

一、寫一個腳本:若是某路徑不存在,則將其建立爲目錄;不然顯示其存在,並顯示內容類型;bash

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


二、寫一個腳本,完成以下功能;判斷給定的兩個數值,孰大孰小;給定數值的方法:腳本參數,命令交互;ide

    #!/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


三、求100之內全部奇數之和函數

方法1:ui

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

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

    echo "Even sum: $sum."

方法2:spa

    #!/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."


四、寫一個腳本實現以下功能:input

            (1) 傳遞兩個文本文件路徑給腳本;string

            (2) 顯示兩個文件中空白行數較多的文件及其空白行的個數;it

            (3) 顯示兩個文件中總行數較多的文件及其總行數;io

    #!/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


五、寫一個腳本

            (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


六、寫一個腳本,打印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


七、寫一個腳本,寫這麼幾個函數:函數一、實現給定的兩個數值的之和;函數二、取給定兩個數值的最大公約數;函數三、取給定兩個數值的最小公倍數;關於函數的選定、兩個數值的大小都將經過交互式輸入來提供。

    #!/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值
    }
相關文章
相關標籤/搜索