1、列印乙個等腰三角形
#!/bin/bashfor i in `seq
10` ;do
for j in `seq $[10-$i]` ;do
echo -n '
'done
for k in `seq $[i*2-1]` ;do
echo -n '*'
done
echo
done
2、列印99乘法表
#!/bin/bashfor i in ;do
for (( j=1; j<=$i; j++ )) ;do
accumulate=$[i*j]
echo -ne "
$*$=$accumulate\t
"done
echo
done
3、輸入網段,探測網段內存活的主機
#!/bin/bashtrap
'exit'2
read -p "
please input a network address:
"dnet
echo $dnet |grep -qe "
^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.)0$
" ||
for i in ;do
.$i &>/dev/null ;then
echo
"$.$i is up."fi
}&done
unset dnet
unset i
wait
4、列印西洋棋棋盤
#!/bin/bashread -p "
size:
"bsize
line=$[bsize*8-1
]for i in `seq
0 $line` ;do
for j in `seq
0 $line` ;do
if [ $[(i/bsize+j/bsize)%2] -eq 0 ] ;then
echo -ne "
\033[47m \033[0m
"else
echo -n ""fi
done
echo
done
5、編寫函式(my_functions),實現列印綠色ok和紅色failed
#print ok and failed#######################################green_ok()
red_failed()
screen=`stty -f /dev/tty size`
columus=$
spa_col=$[columus-26
]progress() ;do
echo -n "."
sleep
0.5done
}success() ]
echo -n "
$string
"progress
for i in `seq $rt_spa` ;do
echo -n "
"done
green_ok
}failed() ]
echo -n "
$string
"progress
for i in `seq $rt_spa` ;do
echo -n "
"done
red_failed
}
6、編寫指令碼copycmd.sh
(4) 複製此命令依賴到的所有庫檔案至目標目錄下的對應路徑下;
(5)每次複製完成乙個命令後,不要退出,而是提示使用者鍵入新的要複製的命令,並重複完成上述功能;直到使用者輸入quit退出;
#!/bin/bash. my_functions
ddir="
/mnt/sysroot
"[ ! -d "
$ddir
" ] && mkdir
"$ddir
"cpbin() $
" ] && mkdir -p "$$"
cp -n "
$cmd_path""
$$"}libcp() $
" ] && mkdir -p "$$"
cp -n "
$line""
$$" 2>/dev/null
done
}while read -p "
input a cmd. (quit):
" cmd ;do
if [ "
$cmd
" == '
quit
' ] ;then
echo
"think you! bye bye.
"; break; fi
if ! which
"$cmd
" &>/dev/null ;then
echo
"not find $cmd, please input again.
"failed
"copy $cmd failed.
"continue
ficmd_path=`which $cmd |grep -o "
/.*"
` lib_path=`ldd $cmd_path |sed -nr 's#.*[[:space:]]+(/.*) .*#\1#p'`
cpbin
libcp
success
"copy $cmd complete.
"done
7、求斐波那契數列的第n個數
#!/bin/bashfeibo()
read -p "
please a num:
" n
8、求n的階乘
#!/bin/bashfact()
fact $
1
9、漢諾塔:問題是源於印度乙個古老傳說。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤,利用函式,實現n片盤的漢諾塔的移動步驟。
hannuota()read -p "
please input num: "n
hannuota $n a b c
10、編寫服務指令碼testsrv.sh,完成如下要求
(4) 如是stop:則刪除/var/lock/subsys/script_name, 並顯示「停止完成」
(5) 如是restart,則先stop, 再start
(6) 如是status, 則如果/var/lock/subsys/script_name檔案存在,則顯示「script_name is running...」 如果/var/lock/subsys/script_name檔案不存在,則顯示「script_name is stopped...」 其中:script_name為當前指令碼名
(7)在所有模式下禁止啟動該服務,可用chkconfig 和 service命令管理
#!/bin/bash# chkconfig: 2345 98 01
. /root/bin/35_my_functions
lockfile="
/var/lock/subsys/testsrv
"s_start()
s_stop()
s_status()
s_usage()
"exit 1}
[ $# -ne 1 ] &&s_usage
case $1
instart)
s_start
;;stop)
s_stop
;;restart)
if [ -f "
$lockfile
" ] ;then
s_stop
s_start
else
failed
"testsrv is not running , stop
"s_start
fi;;
status)
s_status
;;*) s_usage
esac
個人學習筆記,只供參考 ^_^
shell指令碼中 函式和跳出迴圈
函式相當於乙個指令碼 塊 它可以把乙個功能封裝起來。使用時直接在指令碼中呼叫函式名字 使用函式的好處是可以使指令碼模組化 變的簡便 函式的建立 function 函式名 function可寫可不寫 使用函式時 直接在指令碼中輸入函式名就可以了 例如 bin bash function func1 c...
shell 指令碼while迴圈和for迴圈
1.1 while 當條件為真時就進行迴圈,條件不成立時退出 提示使用者輸入 y 或 y 來終止程式。a用在判斷式中表示 and bin bash while aa y a aa y do read p please input y y to stop this program aa done1.2...
shell指令碼 for迴圈
迴圈語句 while對於要求控制迴圈次數 操作物件按數字順序編號,按特定條件執行重複操作。重複測試某個條件時,只要條件成立就會反覆執行 無限 除非強制終止,或者exit語句退出指令碼 for迴圈語句 需要指定乙個變數以及可以取值的取值列表,針對每乙個不同的取值執行相同的命令序列,直到變數值用盡,退出...