例題:
shell1.sh 顯示日期和時間。
#!/bin/bash
echo“current time is `date`” //date要加反引號
shell2.sh顯示文件名,並顯示位置參數(執行時帶一個參數)。(①$0是一個特殊的變量,它的內容是當前這個shell程序的文件名;②$1是一個位置參數,位置參數之間用空格分隔,shell取第一個位置參數替換程序文件中的$1,第二個替換$2,依次類推。)
#!/bin/bash
echo“the program name is $0” //$0是一個特殊的變數
echo“the first para is $1” //$1是一個位置參數
echo“the program exit” //執行時帶一個參數如./shell2.sh abcd
shell3.sh 判斷並顯示位置參數
#!/bin/bash
if[ -d “$1”];then
echo“$1 is directory ,existed”
else
echo“$1 does not exist ,now create it”
mkdir$1
echo“$1 is created”
fi //執行時帶一個參數
shell4.sh 問候用戶
#!/bin/bash
user=`whoami`
case $user in
teacher)
echo“hello teacher”;;
root)
echo“hello root”;;
*)
echo“hello $user,welcome”
esac
求1+2+3+...+100的和是?
#!/bin/bash
SUM=0
I=0
while[ $I -le 100 ]
do
SUM=$((SUM+I))
I=$((I+1))
done
echo"由1+2+3+...+100的和是:$SUM"
2、(基訓十一)在根目錄下有四個文件m1.txt,m2.txt,m3.txt,m4.txt,用Shell編程,實現自動創建m1,m2,m3,m4四個目錄,並將m1.txt,m2.txt,m3.txt,m4.txt四個文件分別拷貝到各自相應的目錄下。
#!/bin/bash
cd/
touchm1.txt m2.txt m3.txt m4.txt
I=1
while[ $I -le 4 ]
do
mkdirm$I
cpm$I.txt m$I
I=$((I+1))
done
3、(基訓十二) 編寫一個名爲myfirstshell.sh的腳本,它包括以下內容。a)包含一段註釋,列出您的姓名、腳本的名稱和編寫這個腳本的目的。
b)問候用戶。
c)顯示日期和時間。
d)顯示這個月的日曆。
e)顯示您的機器名。
f)顯示當前這個操作系統的名稱和版本。
g)顯示父目錄中的所有文件的列表。
h)顯示root正在運行的所有進程。
i)顯示變量TERM、PATH和HOME的值。
j)顯示磁盤使用情況。
k)用id命令打印出您的組ID。
m)跟用戶說“Goodbye”
#!/bin/bash
#09嵌入5號賈德進myfirstshell.shshell的簡單編程
user=`whoami`
case$user in
root)
echo"hello root";;
teacher)
echo"hello teacher";;
*)
echo"hello $user,welcome"
esac
echo"日期和時間:`date`"
echo"本月的日曆:`cal`"
echo"本機的機器名:`uname-n`"
echo"當前這個操作系統的名稱和版本:`uname-s;uname -r`"
echo"父目錄中的所有文件的列表:`ls../`"
echo"root正在運行的所有進程:`ps -u root`"
echo"變數TERM的值:$TERM"
echo"變數PATH的值:$PATH"
echo"變數HOME的值:$HOME"
echo"磁盤的使用情況:`df`"
echo"用id命令打印出你的組ID:`id-g`"
echo"Good bye!"
4、(基訓十三) 設計一個Shell程序,在/userdata目錄下建立50個目錄,即user1~user50,並設置每個目錄的權限爲rwxr-xr—
#!/bin/bash
cd/userdata
I=1
while[ $I -le 50 ]
do
mkdir-p userdata/user$I
chmodo-x user$I
I=$((I+1))
done
5、(基訓十四) 編寫shell程序,實現自動刪除50個用戶賬號的功能。賬號名爲stud1至stud50。
#!/bin/bash
cd/userdata
I=1
while[ $I -le 50 ]
do
mkdir-p userdata/user$I
chmodo-x user$I
I=$((I+1))
done
6、(基訓十四)設計一個shell程序,備份並壓縮/etc目錄的所有內容,存放在/root/bak目錄裏,且文件名爲如下形式yymmdd_etc,yy爲年,mm爲月,dd爲日。
#!/bin/bash
DIRNAME=`ls|root|grep bak `
if[-z $DIRNAME ]; then
mkdir/root/bak
cd/root/bak
fi
YY=`date+ %y`
MM=`date+ %m`
DD=`date+ %d`tar czvf ${YY}${MM}${DD}_etc.gz /etc
echo"etc bak finshied"
7、(基訓十四) 某系統管理員需每天做一定的重複工作,請按照下列要求,編制一個解決方案:
(1)在下午4:50刪除/abc目錄下的全部子目錄和全部文件;
(2)下午5:50將/data目錄下的所有目錄和文件歸檔並壓縮爲文件:backup.tar.gz;
(3)在下午5:55將IDE接口的第二個邏輯分區卸載。
//採用:vi pram.cron
#(1)在下午4:50刪除/abc目錄下的全部子目錄和全部文件;
5016 *** rm -rf /abc/*
#(2)下午5:50將/data目錄下的所有目錄和文件歸檔並壓縮爲文件:backup.tar.gz;
5017 *** tar czvf back.tar.gz /data
#(3)在下午5:55將IDE接口的第二個邏輯分區卸載.
5517 *** umount /dev/hda6
//執行:crontabpram.cron