2009年12月3日 星期四

[Linux] Shell Script Homework1

Linux Shell Script Programming hw 1
----

1.設計一個名為showme的script,藉由環境變數及一些Linux指令,使其可以顯示資訊如下:
##########################################################
#!/bin/sh
echo "Login ID: $LOGNAME"
echo "My Home: $HOME"
echo "List My Home Directory"
ls -l /root
echo "My Shell: $SHELL"
echo "Hostname: $HOSTNAME"
pwd
ls -l

exit 0
##########################################################

2.設計一個名為verbvar的script,利用read輸入一個簡單的英文動詞,在其前加入一個to印出
原形,字尾加ing印出作為進行式,字尾加ed印出作為過去式
##########################################################
#!/bin/sh
echo -n "Please Enter The Verb:"
read word
echo "Present tense: to ${word}"
echo "Past tense: ${word}ed"
echo "Progressive tense: ${word}ing"

exit 0
##########################################################

3.設計一個名為addtwo的script,使其可以接收兩個數字參數,並將其相加後的結果顯示出來,
如果參數個數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確的執行方式必須給
兩個參數。
##########################################################
#!/bin/sh
if [ $# -eq 2 ]
then
  echo "sum = `expr $1 + $2`"
else
  echo "Usage: ./addtwo number1 number2"
fi

exit 0
##########################################################

4.設計一個名為mycal的script,使其可以接收三個數字參數,第一、三個參數為數字,第二
個參數為運算子(+-*/其中之一)以多層的if計算其結果,並將其結果顯示出來,如果參數個
數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確的執行方式。如果中間的運
算子是/,而第三個參數是0,則顯示除數不可為0
##########################################################
#!/bin/sh
if [ $# -eq 3 ]
then
  if [ "$2" = "+" ]
  then
    echo "result = `expr $1 + $3`"
  elif [ "$2" = "-" ]
  then
    echo "result = `expr $1 - $3`"
  elif [ "$2" = "*" ]
  then
    echo "result = `expr $1 \* $3`"
  elif [ "$2" = "/" ]
  then
    echo "result = `expr $1 / $3`"
  else
    echo "you have worng format"
  fi
else
  echo "you have worng format"
fi

exit 0
##########################################################

5.設計一個名為getmax的script,使其可以接收兩個數字參數,將較大的數顯示出來,如果
都一樣大,則顯示都一樣大。
##########################################################
#!/bin/sh
if [ $1 -gt $2 ]
then
  echo "Max = $1"
fi
if [ $1 -eq $2 ]
then
  echo "Equals"
fi
if [ $1 -lt $2 ]
then
  echo "Max = $2"
fi

exit 0
##########################################################

6.設計一個名為checkfile的script,使其可以接收一個檔案名稱作為參數,若此名稱不是目
前工作目錄的檔案或目錄,則顯示此名稱不存在,如果是檔案,則顯示其檔案內容,如
果是一目錄則顯示此目錄內的清單。
##########################################################
#!/bin/sh
if [ -e "$1" ]
then
  if [ -f "$1" ]
  then
    cat $1
  elif [ -d "$1" ]
  then
    ls -l $1
  else
    echo "permission deny"
  fi
else
  echo "no file or directory"
fi

exit 0
##########################################################

7.設計一個名為newerfile的script,使其可以接收兩個檔案名稱作為參數,並將日期較新的
檔案名稱顯示出來。
##########################################################
#!/bin/sh
if [ $1 -nt $2 ]
then
  echo "$1 is newer"
else
  echo "$2 is newer"
fi

exit 0
##########################################################

8.設計一個名為avglen的script,使其可以接收一個檔案名稱(文字檔)作為參數,計算此檔
平均每一列有多少bytes。提示:使用wc -l < 檔名; 用man查一下wc的用法
##########################################################
#!/bin/sh
x=`wc -l < $1`
y=`wc -c < $1`

echo "$y $x"
echo "average bytes per line is `expr $y / $x`"

exit 0
##########################################################

9.設計一個名為createtodayfile的script,以touch指令產生一個檔案,檔名中含有今天的日
期,例如myfile20090706.txt。date +%Y...., 其餘date的日期格式, 請以man指令查詢
##########################################################
#!/bin/sh
x=`date +%Y%m%d`
touch myfile$x.txt

exit 0
##########################################################

10.設計一個名為addfiles的script,可自命令列讀取參數產生檔案allfile,如下,每加入一個
檔案,隔2秒,如果重覆執行,則覆蓋原檔案。
##########################################################

沒有留言:

張貼留言