<1>設計一個名為addfiles的script,可自命令列讀取參數產生檔案allfile,如下,
每加入一個檔案,隔2秒,如果重覆執行,則覆蓋原檔案。
#!/bin/bash
allfile=$1
rm -f $allfile
touch $allfile
shift
for x in $@
do
date +%F\ %T >> $allfile
cat $x >> $allfile
sleep 2
done
cat $allfile
#一開始嘗試直接用$1去寫 但會出現錯誤
exit 0
<2>設計一個名為mycal的script,使其可以接收三個數字參數,第一、三個參數為數字
,第二個參數為運算子(+-*/其中之一)配合case命令,計算數字運算的結果,並將其結
果顯示出來,如果參數個數不夠或太多,就不執行運算,而顯示一段訊息,提示出正確
的執行方式。如果中間的運算子是/,而第三個參數是0,則顯示除數不可為0
將各個運算功能分別寫成函數。
#!/bin/bash
aaa()
{
echo `expr $1 $2 $3 `
}
case "$2" in
"+")
aaa $1 $2 $3
;;
"-")
aaa $1 $2 $3
;;
"*")
echo `expr $1 \* $3`
;;
"/")
if [ $3 -eq 0 ]
then
echo 無法計算:除數不可為0
else
aaa $1 $2 $3
fi
;;
esac
exit 0
<3>設計一個名為manymaxmin的script,使其可以接收不固定的多個數字參數,顯示數
字中最大的及最小的,如果都一樣大,則顯示都一樣大。
#!/bin/bash
max="$1"
min="$1"
for x in $@
do
if [ $x -gt $max ]
then
max=$x
else
if [ $x -lt $min ]
then
min=$x
else
continue
fi
fi
done
echo "max=$max"
echo "min=$min"
if [ $max -eq $min ]
then
echo "equal"
fi
exit 0
<4>設計一個名為createmyfiles的script,以迴圈配合touch指令,產生十個檔案,
檔名分別為myprog1.c,myprog2.c,...,myprog10.c。
#!/bin/bash
for ((x=1;x<=10;x++))
do
touch myprog$x.c
done
exit 0
<5>設計一個名為lastfiles的script,顯示目前目錄中最近被修改的n個檔案檔名。
#!/bin/bash
ls -t |head -$1 |nl
exit 0
<6>設計一個名為mvfiles的script,可以將所有副檔名為.c檔案,副檔名更名為.cpp,
更名前後的副檔名均自命令列輸入。 並將更名的結果顯示出來。
#!/bin/bash
for file in *$1
do
mv $file `basename $file $1`$2
echo "renamed $file to `basename $file $1`$2"
done
exit 0
後面兩次的shell真的還滿難的 得再多花點時間練習
加油加油!
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。