2.case
case :琛ㄨ揪寮忓彲浠ョ敤鏉ュ尮閰嶄竴涓粰瀹氱殑瀛楃涓詫紝鑰屼笉鏄暟瀛椼?
case ... in
...) do something here ;;
esac
銆銆 璁╂垜浠湅涓涓緥瀛愩?file鍛戒護鍙互杈ㄥ埆鍑轟竴涓粰瀹氭枃浠剁殑鏂囦歡綾誨瀷錛屾瘮濡傦細
file lf.gz
銆銆 榪欏皢榪斿洖錛?
lf.gz: gzip compressed data, deflated, original filename,
last modified: Mon Aug 27 23:09:18 2001, os: Unix
銆 鎴戜滑鍒╃敤榪欎竴鐐瑰啓浜嗕竴涓彨鍋歴martzip鐨勮剼鏈紝璇ヨ剼鏈彲浠ヨ嚜鍔ㄨВ鍘媌zip2, gzip 鍜寊ip 綾誨瀷鐨勫帇緙╂枃浠訛細
#!/bin/sh
ftype=`file "錛?"`
case "錛刦type" in
"錛?: Zip archive"*)
銆銆 unzip "錛?" ;;
"錛?: gzip compressed"*)
銆銆 gunzip "錛?" ;;
"錛?: bzip2 compressed"*)
銆銆 bunzip2 "錛?" ;;
*) echo "File 錛? can not be uncompressed with smartzip";;
esac
銆銆 鎮ㄥ彲鑳芥敞鎰忓埌鎴戜滑鍦ㄨ繖閲屼嬌鐢ㄤ簡涓涓壒孌婄殑鍙橀噺錛?銆傝鍙橀噺鍖呭惈浜嗕紶閫掔粰璇ョ▼搴忕殑絎竴涓弬鏁板箋?br />
涔熷氨鏄錛屽綋鎴戜滑榪愯錛?
smartzip articles.zip
錛? 灝辨槸瀛楃涓?articles.zip
3. selsect
select 琛ㄨ揪寮忔槸涓縐峛ash鐨勬墿灞曞簲鐢紝灝ゅ叾鎿呴暱浜庝氦浜掑紡浣跨敤銆傜敤鎴峰彲浠ヤ粠涓緇勪笉鍚岀殑鍊間腑榪涜閫夋嫨銆?
select var in ... ; do
銆 break
done
.... now 錛?var can be used ....
涓嬮潰鏄竴涓緥瀛愶細
#!/bin/sh
echo "What is your favourite OS?"
select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
銆銆銆銆 break
done
echo "You have selected 錛剉ar"
銆銆 涓嬮潰鏄鑴氭湰榪愯鐨勭粨鏋滐細
What is your favourite OS?
1) Linux
2) Gnu Hurd
3) Free BSD
4) Other
#? 1
You have selected Linux
娉細var鏄釜鍙橀噺錛屽彲浠ユ崲鎴愬叾瀹冪殑鍊箋俠reak鐢ㄦ潵璺沖嚭寰幆錛屽鏋滄病鏈塨reak鍒欎竴鐩村驚鐜笅鍘匯俤one涓巗elect瀵瑰簲銆?br />
4.loop
loop琛ㄨ揪寮忥細
while ...; do
....
done
銆銆 while-loop 灝嗚繍琛岀洿鍒拌〃杈懼紡嫻嬭瘯涓虹湡銆倃ill run while the expression that we test for is true.
鍏抽敭瀛?break" 鐢ㄦ潵璺沖嚭寰幆銆傝屽叧閿瓧”continue”鐢ㄦ潵涓嶆墽琛屼綑涓嬬殑閮ㄥ垎鑰岀洿鎺ヨ煩鍒頒笅涓涓驚鐜?
銆銆
for-loop琛ㄨ揪寮忔煡鐪嬩竴涓瓧絎︿覆鍒楄〃 (瀛楃涓茬敤絀烘牸鍒嗛殧) 鐒跺悗灝嗗叾璧嬬粰涓涓彉閲忥細
1, for var in ....; do
銆 ....
done
鍦ㄤ笅闈㈢殑渚嬪瓙涓紝灝嗗垎鍒墦鍗癆BC鍒板睆騫曚笂錛?
#!/bin/sh
for var in A B C ; do
銆 echo "var is 錛剉ar"
done
2, for (( 鏉′歡涓; 鏉′歡浜? 鏉′歡涓?);do
...
done
渚嬶細
for ((i=1;i<10;i=錛刐錛刬+1]));do
echo "a"
done
杈撳嚭錛?/p>
a
a
a
a
a
a
a
a
a
鏉′歡涓錛氳繖鍙互鐪嬫垚鏄庡垵濮嬪箋忥紝濡備笂闈㈢殑渚嬪瓙涓紝鍒濆鍊兼槸 i=1 鍟︼紒
鏉′歡浜岋細榪欏彲浠ョ湅鎴愭槸銆庣鍚堝箋忥紝濡備笂闈㈢殑渚嬪瓙涓紝褰?i<=100 鐨勬椂鍊欓兘鏄鍚堟潯浠剁殑錛?
鏉′歡涓夛細榪欏彲浠ョ湅鎴愭槸銆庢闃躲忥紒涔熷氨鏄錛?i 姣忔閮藉姞涓錛?鎵浠ュ暒錛佷笂闈㈢殑渚嬪瓙鏄錛氱敱 i=1 寮濮嬪埌 i<= 100 錛屾瘡嬈?i 閮藉姞涓鏉ユ墽琛屽簳涓嬬殑紼嬪簭孌碉紙灝辨槸 s=s+i 錛夛紝褰?i >100 錛堜篃灝辨槸 i=101 錛夊氨璺沖嚭榪欎竴孌電▼搴忔錛佹庢牱錛佷笉闅懼惂錛?/p>
涓嬮潰鏄竴涓洿涓烘湁鐢ㄧ殑鑴氭湰showrpm錛屽叾鍔熻兘鏄墦鍗頒竴浜汻PM鍖呯殑緇熻淇℃伅錛?
#!/bin/sh
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm
for rpmpackage in 錛?; do
銆 if [ -r "錛剅pmpackage" ];then
銆銆 echo "=============== 錛剅pmpackage =============="
銆銆 rpm -qi -p 錛剅pmpackage
銆 else
銆銆 echo "ERROR: cannot read file 錛剅pmpackage"
銆 fi
done
銆銆 榪欓噷鍑虹幇浜嗙浜屼釜鐗規畩鐨勫彉閲忥紕*錛岃鍙橀噺鍖呭惈浜嗘墍鏈夎緭鍏ョ殑鍛戒護琛屽弬鏁板箋?br />
濡傛灉鎮ㄨ繍琛宻howrpm openssh.rpm w3m.rpm webgrep.rpm
姝ゆ椂 錛? 鍖呭惈浜?3 涓瓧絎︿覆錛屽嵆openssh.rpm, w3m.rpm and webgrep.rpm.
銆巙ntil錛氱洿鍒版潯浠剁浉鍚岀殑鏃跺欐墠紱誨紑紼嬪簭銆忥紱
銆巜hile錛氬綋鏉′歡鐩稿悓鐨勬椂鍊欙紝灝辯戶緇仛錛併?nbsp;
until [ condition1 ] && { || } [ condition2 ] ...
5. 寮曞彿
鍦ㄥ悜紼嬪簭浼犻掍換浣曞弬鏁頒箣鍓嶏紝紼嬪簭浼氭墿灞曢氶厤絎﹀拰鍙橀噺銆傝繖閲屾墍璋撴墿灞曠殑鎰忔濇槸紼嬪簭浼氭妸閫氶厤絎︼紙姣斿*錛夋浛鎹㈡垚鍚堥傜殑鏂囦歡鍚嶏紝瀹冨彉閲忔浛鎹㈡垚鍙橀噺鍊箋備負浜嗛槻 姝㈢▼搴忎綔榪欑鏇挎崲錛屾偍鍙互浣跨敤寮曞彿錛氳鎴戜滑鏉ョ湅涓涓緥瀛愶紝鍋囪鍦ㄥ綋鍓嶇洰褰曚笅鏈変竴浜涙枃浠訛紝涓や釜jpg鏂囦歡錛?mail.jpg 鍜宼ux.jpg銆?
緙栬瘧SHELL鑴氭湰
#ch#!/bin/sh mod +x filename
銆顡玞ho *.jpg ./filename 鏉ユ墽琛屾偍鐨勮剼鏈?
銆銆榪欏皢鎵撳嵃鍑?mail.jpg tux.jpg"鐨勭粨鏋溿?
銆 銆銆寮曞彿 (鍗曞紩鍙峰拰鍙屽紩鍙? 灝嗛槻姝㈣繖縐嶉氶厤絎︽墿灞曪細
#!/bin/sh
echo "*.jpg"
echo '*.jpg'
銆銆榪欏皢鎵撳嵃"*.jpg" 涓ゆ銆?
銆銆鍗曞紩鍙鋒洿涓ユ牸涓浜涖傚畠鍙互闃叉浠諱綍鍙橀噺鎵╁睍銆傚弻寮曞彿鍙互闃叉閫氶厤絎︽墿灞曚絾鍏佽鍙橀噺鎵╁睍銆?
#!/bin/sh
echo 錛凷HELL
echo "錛凷HELL"
echo '錛凷HELL'
銆銆 榪愯緇撴灉涓猴細
/bin/bash
/bin/bash
錛凷HELL
銆銆鏈鍚庯紝榪樻湁涓縐嶉槻姝㈣繖縐嶆墿灞曠殑鏂規硶錛岄偅灝辨槸浣跨敤杞箟瀛楃鈥斺斿弽鏂滄潌錛?
echo *.jpg
echo 錛凷HELL
銆銆榪欏皢杈撳嚭錛?
*.jpg
錛凷HELL
6. Here documents
褰撹灝嗗嚑琛屾枃瀛椾紶閫掔粰涓涓懡浠ゆ椂錛宧ere documents錛堣瘧鑰呮敞錛氱洰鍓嶈繕娌℃湁瑙佸埌榪囧璇ヨ瘝閫傚悎鐨勭炕璇戯級涓縐嶄笉閿欑殑鏂規硶銆傚姣忎釜鑴氭湰鍐欎竴孌靛府鍔╂х殑鏂囧瓧鏄緢鏈夌敤鐨勶紝姝ゆ椂濡傛灉鎴戜滑鍥涙湁閭d釜 here documents灝變笉蹇呯敤echo鍑芥暟涓琛岃杈撳嚭銆?涓涓?"Here document" 浠?<< 寮澶達紝鍚庨潰鎺ヤ笂涓涓瓧絎︿覆錛岃繖涓瓧絎︿覆榪樺繀欏誨嚭鐜板湪here document鐨勬湯灝俱備笅闈㈡槸涓涓緥瀛愶紝鍦ㄨ渚嬪瓙涓紝鎴戜滑瀵瑰涓枃浠惰繘琛岄噸鍛藉悕錛屽茍涓斾嬌鐢╤ere documents鎵撳嵃甯姪錛?
#!/bin/sh
# we have less than 3 arguments. Print the help text:
if [ 錛? -lt 3 ] ; then
cat <
ren -- renames a number of files using sed regular expressions
USAGE: ren 'regexp' 'replacement' files...
EXAMPLE: rename all *.HTM files in *.html:
銆 ren 'HTM錛? 'html' *.HTM
HELP
銆 exit 0
fi
OLD="錛?"
NEW="錛?"
# The shift command removes one argument from the list of
# command line arguments.
shift
shift
# 錛? contains now all the files:
for file in 錛?; do
銆銆 if [ -f "錛刦ile" ] ; then
銆銆銆 newfile=`echo "錛刦ile" | sed "s/錛剓OLD}/錛剓NEW}/g"`
銆銆銆 if [ -f "錛刵ewfile" ]; then
銆銆銆銆 echo "ERROR: 錛刵ewfile exists already"
銆銆銆 else
銆銆銆銆 echo "renaming 錛刦ile to 錛刵ewfile ..."
銆銆銆銆 mv "錛刦ile" "錛刵ewfile"
銆銆銆 fi
銆銆 fi
done
銆 榪欐槸涓涓鏉備竴浜涚殑渚嬪瓙銆傝鎴戜滑璇︾粏璁ㄨ涓涓嬨傜涓涓猧f琛ㄨ揪寮忓垽鏂緭鍏ュ懡浠よ鍙傛暟鏄惁灝忎簬3涓?(鐗規畩鍙橀噺錛? 琛ㄧず鍖呭惈鍙傛暟鐨勪釜鏁? 銆傚鏋滆緭鍏ュ弬鏁板皬浜?涓紝鍒欏皢甯姪鏂囧瓧浼犻掔粰cat鍛戒護錛岀劧鍚庣敱cat鍛戒護灝嗗叾鎵撳嵃鍦ㄥ睆騫曚笂銆傛墦鍗板府鍔╂枃瀛楀悗紼嬪簭閫鍑恒?濡傛灉杈撳叆鍙傛暟絳変簬鎴栧ぇ浜?涓紝鎴戜滑灝卞皢絎竴涓弬鏁拌祴鍊肩粰鍙橀噺OLD錛岀浜屼釜鍙傛暟璧嬪肩粰鍙橀噺NEW銆備笅涓姝ワ紝鎴戜滑浣跨敤shift鍛戒護灝嗙涓涓拰絎簩涓弬鏁頒粠 鍙傛暟鍒楄〃涓垹闄わ紝榪欐牱鍘熸潵鐨勭涓変釜鍙傛暟灝辨垚涓哄弬鏁板垪琛紕*鐨勭涓涓弬鏁般傜劧鍚庢垜浠紑濮嬪驚鐜紝鍛戒護琛屽弬鏁板垪琛ㄨ涓涓帴涓涓湴琚祴鍊肩粰鍙橀噺錛刦ile銆傛帴鐫鎴?浠垽鏂鏂囦歡鏄惁瀛樺湪錛屽鏋滃瓨鍦ㄥ垯閫氳繃sed鍛戒護鎼滅儲鍜屾浛鎹㈡潵浜х敓鏂扮殑鏂囦歡鍚嶃傜劧鍚庡皢鍙嶇煭鏂滅嚎鍐呭懡浠ょ粨鏋滆祴鍊肩粰newfile銆傝繖鏍鋒垜浠氨杈懼埌浜嗘垜浠殑鐩?鐨勶細寰楀埌浜嗘棫鏂囦歡鍚嶅拰鏂?br />
鏂囦歡鍚嶃傜劧鍚庝嬌鐢╩v鍛戒護榪涜閲嶅懡鍚嶃?
4)鍑芥暟
濡傛灉鎮ㄥ啓浜嗕竴浜涚◢寰鏉備竴浜涚殑紼嬪簭錛屾偍灝變細鍙戠幇鍦ㄧ▼搴忎腑鍙兘鍦ㄥ嚑涓湴鏂逛嬌鐢ㄤ簡鐩稿悓鐨勪唬鐮侊紝騫朵笖鎮ㄤ篃浼氬彂鐜幫紝濡傛灉鎴戜滑浣跨敤浜嗗嚱鏁幫紝浼氭柟渚垮緢澶氥備竴涓嚱鏁版槸榪欎釜鏍峰瓙鐨勶細
functionname()
{
# inside the body 錛? is the first argument given to the function
# 錛? the second ...
body
}
鎮ㄩ渶瑕佸湪姣忎釜紼嬪簭鐨勫紑濮嬪鍑芥暟榪涜澹版槑銆?
銆銆 涓嬮潰鏄竴涓彨鍋歺titlebar鐨勮剼鏈紝浣跨敤榪欎釜鑴氭湰鎮ㄥ彲浠ユ敼鍙樼粓绔獥鍙g殑鍚嶇О銆?br />
榪欓噷浣跨敤浜嗕竴涓彨鍋歨elp鐨勫嚱鏁般傛濡傛偍鍙互鐪嬪埌鐨勯偅鏍鳳紝榪欎釜瀹氫箟鐨勫嚱鏁拌浣跨敤浜嗕袱嬈°?
#!/bin/sh
# vim: set sw=4 ts=4 et:
help()
{
銆銆 cat <
xtitlebar -- change the name of an xterm, gnome-terminal or kde konsole
USAGE: xtitlebar [-h] "string_for_titelbar"
OPTIONS: -h help text
EXAMPLE: xtitlebar "cvs"
HELP
銆銆 exit 0
}
# in case of error or if -h is given we call the function help:
[ -z "錛?" ] && help
[ "錛?" = "-h" ] && help
# send the escape sequence to change the xterm titelbar:
echo -e "33]0;錛?07"
#
鍦ㄨ剼鏈腑鎻愪緵甯姪鏄竴縐嶅緢濂界殑緙栫▼涔犳儻錛岃繖鏍鋒柟渚垮叾浠栫敤鎴鳳紙鍜屾偍錛変嬌鐢ㄥ拰鐞嗚В鑴氭湰銆?
鍛戒護琛屽弬鏁?
銆銆鎴戜滑宸茬粡瑙佽繃錛? 鍜?錛?, 錛? ... 錛? 絳夌壒孌婂彉閲忥紝榪欎簺鐗規畩鍙橀噺鍖呭惈浜嗙敤鎴蜂粠鍛戒護琛岃緭鍏ョ殑鍙傛暟銆傝縿浠婁負姝紝鎴戜滑浠呬粎浜嗚В浜嗕竴浜涚畝鍗曠殑鍛戒護琛岃娉曪紙姣斿涓浜涘己鍒舵х殑鍙傛暟鍜屾煡鐪嬪府鍔╃殑-h閫夐」錛夈?浣嗘槸鍦ㄧ紪鍐欐洿澶嶆潅鐨勭▼搴忔椂錛屾偍鍙兘浼氬彂鐜版偍闇瑕佹洿澶氱殑鑷畾涔夌殑閫夐」銆傞氬父鐨勬儻渚嬫槸鍦ㄦ墍鏈夊彲閫夌殑鍙傛暟涔嬪墠鍔犱竴涓噺鍙鳳紝鍚庨潰鍐嶅姞涓婂弬鏁板?(姣斿鏂囦歡鍚?銆傛湁濂藉鏂規硶鍙互瀹炵幇瀵硅緭鍏ュ弬鏁扮殑鍒嗘瀽錛屼絾鏄笅闈㈢殑浣跨敤case琛ㄨ揪寮忕殑渚嬪瓙鏃犻仐鏄竴涓笉閿欑殑鏂規硶銆?
#!/bin/sh
help()
{
銆 cat <
This is a generic command line parser demo.
USAGE EXAMPLE: cmdparser -l hello -f -- -somefile1 somefile2
HELP
銆 exit 0
}
while [ -n "錛?" ]; do
case 錛? in
銆銆 -h) help;shift 1;; # function help is called
銆銆 -f) opt_f=1;shift 1;; # variable opt_f is set
銆銆 -l) opt_l=錛?;shift 2;; # -l takes an argument -> shift by 2
銆銆 --) shift;break;; # end of options
銆銆 -*) echo "error: no such option 錛?. -h for help";exit 1;;
銆銆 *) break;;
esac
done
echo "opt_f is 錛刼pt_f"
echo "opt_l is 錛刼pt_l"
echo "first arg is 錛?"
echo "2nd arg is 錛?"
銆銆鎮ㄥ彲浠ヨ繖鏍瘋繍琛岃鑴氭湰錛?
cmdparser -l hello -f -- -somefile1 somefile2
銆銆榪斿洖鐨勭粨鏋滄槸錛?
opt_f is 1
opt_l is hello
first arg is -somefile1
2nd arg is somefile2
銆銆榪欎釜鑴氭湰鏄浣曞伐浣滅殑鍛紵鑴氭湰棣栧厛鍦ㄦ墍鏈夎緭鍏ュ懡浠よ鍙傛暟涓繘琛屽驚鐜紝灝嗚緭鍏ュ弬鏁頒笌case琛ㄨ揪寮忚繘琛屾瘮杈冿紝濡傛灉鍖歸厤鍒欒緗竴涓彉閲忓茍涓旂Щ闄よ鍙傛暟銆傛牴鎹畊nix緋葷粺鐨勬儻渚嬶紝棣栧厛杈撳叆鐨勫簲璇ユ槸鍖呭惈鍑忓彿鐨勫弬鏁?
絎?閮ㄥ垎 瀹炰緥
鐜板湪鎴戜滑鏉ヨ璁虹紪鍐欎竴涓剼鏈殑涓鑸楠ゃ備換浣曚紭縐鐨勮剼鏈兘搴旇鍏鋒湁甯姪鍜岃緭鍏ュ弬鏁般傚茍涓斿啓涓涓吉鑴氭湰錛坒ramework.sh錛夛紝璇ヨ剼鏈寘鍚簡澶у鏁拌剼鏈兘闇瑕佺殑妗嗘灦緇撴瀯錛屾槸涓涓潪甯鎬笉閿欑殑涓繪剰銆傝繖鏃跺欙紝鍦ㄥ啓涓涓柊鐨勮剼鏈椂鎴戜滑鍙渶瑕佹墽琛屼竴涓媍opy鍛戒護錛?
cp framework.sh myscript
銆鐒跺悗鍐嶆彃鍏ヨ嚜宸辯殑鍑芥暟銆?
銆銆璁╂垜浠啀鐪嬩袱涓緥瀛愶細
銆銆浜岃繘鍒跺埌鍗佽繘鍒剁殑杞崲
銆銆鑴氭湰 b2d 灝嗕簩榪涘埗鏁?(姣斿 1101) 杞崲涓虹浉搴旂殑鍗佽繘鍒舵暟銆傝繖涔熸槸涓涓敤expr鍛戒護榪涜鏁板榪愮畻鐨勪緥瀛愶細
#!/bin/sh
# vim: set sw=4 ts=4 et:
help()
{
銆cat <
b2h -- convert binary to decimal
USAGE: b2h [-h] binarynum
OPTIONS: -h help text
EXAMPLE: b2h 111010
will return 58
HELP
銆exit 0
}
error()
{
銆銆# print an error and exit
銆銆echo "錛?"
銆銆exit 1
}
lastchar()
{
銆銆# return the last character of a string in 錛剅val
銆銆if [ -z "錛?" ]; then
銆銆銆銆# empty string
銆銆銆銆rval=""
銆銆銆銆return
銆銆fi
銆銆# wc puts some space behind the output this is why we need sed:
銆銆numofchar=`echo -n "錛?" | wc -c | sed 's/ //g' `
銆銆# now cut out the last char
銆銆rval=`echo -n "錛?" | cut -b 錛刵umofchar`
}
chop()
{
銆銆# remove the last character in string and return it in 錛剅val
銆銆if [ -z "錛?" ]; then
銆銆銆銆# empty string
銆銆銆銆rval=""
銆銆銆銆return
銆銆fi
銆銆# wc puts some space behind the output this is why we need sed:
銆銆numofchar=`echo -n "錛?" | wc -c | sed 's/ //g' `
銆銆if [ "錛刵umofchar" = "1" ]; then
銆銆銆銆# only one char in string
銆銆銆銆rval=""
銆銆銆銆return
銆銆fi
銆銆numofcharminus1=`expr 錛刵umofchar "-" 1`
銆銆# now cut all but the last char:
銆銆rval=`echo -n "錛?" | cut -b 0-錛剓numofcharminus1}`
}
while [ -n "錛?" ]; do
case 錛? in
銆銆-h) help;shift 1;; # function help is called
銆銆--) shift;break;; # end of options
銆銆-*) error "error: no such option 錛?. -h for help";;
銆銆*) break;;
esac
done
# The main program
sum=0
weight=1
# one arg must be given:
[ -z "錛?" ] && help
binnum="錛?"
binnumorig="錛?"
while [ -n "錛刡innum" ]; do
銆銆lastchar "錛刡innum"
銆銆if [ "錛剅val" = "1" ]; then
銆銆銆銆sum=`expr "錛剋eight" "+" "錛剆um"`
銆銆fi
銆銆# remove the last position in 錛刡innum
銆銆chop "錛刡innum"
銆銆binnum="錛剅val"
銆銆weight=`expr "錛剋eight" "*" 2`
done
echo "binary 錛刡innumorig is decimal 錛剆um"
銆 璇ヨ剼鏈嬌鐢ㄧ殑綆楁硶鏄埄鐢ㄥ崄榪涘埗鍜屼簩榪涘埗鏁版潈鍊?(1,2,4,8,16,..)錛屾瘮濡備簩榪涘埗"10"鍙互榪欐牱杞崲鎴愬崄榪涘埗錛?
0 * 1 + 1 * 2 = 2
銆銆涓轟簡寰楀埌鍗曚釜鐨勪簩榪涘埗鏁版垜浠槸鐢ㄤ簡lastchar 鍑芥暟銆傝鍑芥暟浣跨敤wc –c璁$畻瀛楃涓暟錛岀劧鍚庝嬌鐢╟ut鍛戒護鍙栧嚭鏈熬涓涓瓧絎︺侰hop鍑芥暟鐨勫姛鑳藉垯鏄Щ闄ゆ渶鍚庝竴涓瓧絎︺?
鏂囦歡寰幆紼嬪簭
銆銆鎴栬鎮ㄦ槸鎯沖皢鎵鏈夊彂鍑虹殑閭歡淇濆瓨鍒頒竴涓枃浠朵腑鐨勪漢浠腑鐨勪竴鍛橈紝浣嗘槸鍦ㄨ繃浜嗗嚑涓湀浠ュ悗錛岃繖涓枃浠跺彲鑳戒細鍙樺緱寰堝ぇ浠ヨ嚦浜庝嬌瀵硅鏂囦歡鐨勮闂熷害鍙樻參銆備笅闈㈢殑 鑴氭湰rotatefile鍙互瑙e喅榪欎釜闂銆傝繖涓剼鏈彲浠ラ噸鍛藉悕閭歡淇濆瓨鏂囦歡錛堝亣璁句負outmail錛変負outmail.1錛岃屽浜巓utmail.1灝卞彉鎴愪簡outmail.2 絳夌瓑絳夌瓑...
#!/bin/sh
# vim: set sw=4 ts=4 et:
ver="0.1"
help()
{
銆銆cat <
rotatefile -- rotate the file name
USAGE: rotatefile [-h] filename
OPTIONS: -h help text
EXAMPLE: rotatefile out
This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1
and create an empty out-file
The max number is 10
version 錛剉er
HELP
銆銆exit 0
}
error()
{
銆銆echo "錛?"
銆銆exit 1
}
while [ -n "錛?" ]; do
case 錛? in
銆銆-h) help;shift 1;;
銆銆--) break;;
銆銆-*) echo "error: no such option 錛?. -h for help";exit 1;;
銆銆*) break;;
esac
done
# input check:
if [ -z "錛?" ] ; then
error "ERROR: you must specify a file, use -h for help"
fi
filen="錛?"
# rename any .1 , .2 etc file:
for n in 9 8 7 6 5 4 3 2 1; do
銆銆if [ -f "錛刦ilen.錛刵" ]; then
銆銆銆銆p=`expr 錛刵 + 1`
銆銆銆銆echo "mv 錛刦ilen.錛刵 錛刦ilen.錛刾"
銆銆銆銆mv 錛刦ilen.錛刵 錛刦ilen.錛刾
銆銆fi
done
# rename the original file:
if [ -f "錛刦ilen" ]; then
銆銆echo "mv 錛刦ilen 錛刦ilen.1"
銆銆mv 錛刦ilen 錛刦ilen.1
fi
echo touch 錛刦ilen
touch 錛刦ilen
銆銆榪欎釜鑴氭湰鏄浣曞伐浣滅殑鍛紵鍦ㄦ嫻嬬敤鎴鋒彁渚涗簡涓涓枃浠跺悕浠ュ悗錛屾垜浠繘琛屼竴涓?鍒?鐨勫驚鐜傛枃浠?琚懡鍚嶄負10錛屾枃浠?閲嶅懡鍚嶄負9絳夌瓑銆傚驚鐜畬鎴愪箣鍚庯紝鎴戜滑灝嗗師濮嬫枃浠跺懡鍚嶄負鏂囦歡1鍚屾椂寤虹珛涓涓笌鍘熷鏂囦歡鍚屽悕鐨勭┖鏂囦歡銆?
璋冭瘯
銆銆鏈綆鍗曠殑璋冭瘯鍛戒護褰撶劧鏄嬌鐢╡cho鍛戒護銆傛偍鍙互浣跨敤echo鍦ㄤ換浣曟鐤戝嚭閿欑殑鍦版柟鎵撳嵃浠諱綍鍙橀噺鍊箋傝繖涔熸槸緇濆ぇ澶氭暟鐨剆hell紼嬪簭鍛樿鑺辮垂80%鐨勬椂闂存潵璋冭瘯紼嬪簭鐨勫師鍥犮係hell紼嬪簭鐨勫ソ澶勫湪浜庝笉闇瑕侀噸鏂扮紪璇戯紝鎻掑叆涓涓猠cho鍛戒護涔熶笉闇瑕佸灝戞椂闂淬?
銆銆shell涔熸湁涓涓湡瀹炵殑璋冭瘯妯″紡銆傚鏋滃湪鑴氭湰"strangescript" 涓湁閿欒錛屾偍鍙互榪欐牱鏉ヨ繘琛岃皟璇曪細
sh -x strangescript
銆銆榪欏皢鎵ц璇ヨ剼鏈茍鏄劇ず鎵鏈夊彉閲忕殑鍊箋?
銆銆shell榪樻湁涓涓笉闇瑕佹墽琛岃剼鏈彧鏄鏌ヨ娉曠殑妯″紡銆傚彲浠ヨ繖鏍蜂嬌鐢細
sh -n your_script
銆銆榪欏皢榪斿洖鎵鏈夎娉曢敊璇?/p>