2010年5月7日 星期五

5/7 Linux--SHELL Homewrk2

<1>設計一個名為addtwo的script,使其可以接收兩個數字參數,並將其相加後的結果
顯示出來,如果參數個數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確的
執行方式必須給兩個參數。
#!/bin/bash

if [ -n "$3" ]
then 
echo "addtwo number1 number2"
else 
if [ -z "$2" ]
then
echo "addtwo number1 number2"  
else expr $1 + $2
fi
fi

exit 0
<2>設計一個名為mycal的script,使其可以接收三個數字參數,第一、三個參數為數字
,第二個參數為運算子(+-*/其中之一)以多層的if計算其結果,並將其結果顯示出來,
如果參數個數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確的執行方式。
如果中間的運算子是/,而第三個參數是0,則顯示除數不可為0
#!/bin/bash

case "$2" in
"+")
expr $1 + $3
;;
"-")
expr $1 - $3
;;
"*")
expr $1 \* $3
;;
"/")
if [ $3 -eq 0 ]
then 
echo 無法計算:除數不可為0
else 
expr $1 / $3
fi
;;
  
esac

exit 0
<3>設計一個名為getmax的script,使其可以接收兩個數字參數,將較大的數顯示出來
,如果都一樣大,則顯示都一樣大。
 
#!/bin/bash

if test $1 -eq $2
then
echo "Equals"
else
if test $1 -lt $2
then
echo "max =$2"
else
echo "max =$1"
fi
fi
exit 0
<4>設計一個名為checkfile的script,使其可以接收一個檔案名稱作為參數,若此名稱
不是目前工作目錄的檔案或目錄,則顯示此名稱不存在,如果是檔案,則顯示其檔案內容
,如果是一目錄則顯示此目錄內的清單。
#!/bin/bash

if [ -e "$1" ]
then
if [ -f "$1" ]
then
cat $1
elif [ -d "$1" ]
then
ls -l $1
else
echo "找不到檔案或資料夾"
fi
else
echo "找不到檔案或資料夾"
fi

exit 0
<5>設計一個名為newerfile的script,使其可以接收兩個檔案名稱作為參數,並將日期
較新的檔案名稱顯示出來。
#!/bin/bash

if test $1 -nt $2
then
echo $1 較新
else echo $2 較新
fi

exit 0
<6>設計一個名為avglen的script,使其可以接收一個檔案名稱(文字檔)作為參數,計
算此檔平均每一列有多少bytes。
   提示:使用wc -l < 檔名; 用man查一下wc的用法 
 
#!/bin/bash
if  [ -f "$1" ]
then
echo "平均byte數為:`expr $(wc -c < $1 ) / $(wc -l < $1)`"
else
echo haha
fi

exit 0
<7>設計一個名為createtodayfile的script,以touch指令產生一個檔案,檔名中
含有今天的日期,例如myfile20090706.txt。
   提示:date +%Y...., 其餘date的日期格式, 請以man指令查詢
#!/bin/bash

file=$1

echo -n "請輸入檔案名稱:"
read file

touch ${file}$(date +%Y%m%d)\.txt

exit 0 

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。