锘??xml version="1.0" encoding="utf-8" standalone="yes"?> #!/bin/sh #鍑芥暟 if gw 璇存槑錛?br />if 鍛戒護/鍑芥暟 0涓虹湡錛岃蛋then
杞嚜:http://linux008.blog.51cto.com/2837805/550596
璇存槑錛歳oute鍛戒護鏄墦鍗板拰鎿嶄綔ip璺敱琛?br />鎻忚堪錛歳oute鎿嶄綔鍩轟簬鍐呮牳ip璺敱琛紝瀹冪殑涓昏浣滅敤鏄垱寤轟竴涓潤鎬佽礬鐢辮鎸囧畾涓涓富鏈烘垨鑰呬竴涓綉緇滈氳繃涓涓綉緇滄帴鍙o紝濡俥th0銆傚綋浣跨敤"add"鎴栬?/span>"del"鍙傛暟鏃訛紝璺敱琛ㄨ淇敼錛屽鏋滄病鏈夊弬鏁幫紝鍒欐樉紺鴻礬鐢辮〃褰撳墠鐨勫唴瀹廣?br />鍙傛暟璇存槑錛歛dd:娣誨姞涓鏉℃柊璺敱銆?br /> del:鍒犻櫎涓鏉¤礬鐢便?br /> -net:鐩爣鍦板潃鏄竴涓綉緇溿?br /> -host:鐩爣鍦板潃鏄竴涓富鏈恒?br /> netmask:褰撴坊鍔犱竴涓綉緇滆礬鐢辨椂錛岄渶瑕佷嬌鐢ㄧ綉緇滄帺鐮併?br /> gw:璺敱鏁版嵁鍖呴氳繃緗戝叧銆傛敞鎰忥紝浣犳寚瀹氱殑緗戝叧蹇呴』鑳藉杈懼埌銆?br /> metric錛氳緗礬鐢辮煩鏁般?br />瀹炰緥錛?br /> 1銆乺oute add -net 192.168.2.0 netmask 255.255.255.0 dev eth0
娣誨姞涓鏉″埌杈?92.168.2.0緗戠粶鐨勮礬鐢憋紝鎸囧畾緗戠粶鎺╃爜涓?55.255.255.0,鏁版嵁鍖呴氳繃緗戠粶鎺ュ彛eth0銆?br />
2銆乺oute add -net 192.57.66.0 netmask 255.255.255.0 gw 192.168.2.1
娣誨姞涓鏉″埌杈?92.57.66.0緗戠粶鐨勮礬鐢憋紝鎸囧畾緗戠粶鎺╃爜涓?55.255.255.0,鏁版嵁鍖呴氳繃緗戝叧鍦板潃192.168.2.1銆?br />
3銆乺oute add -host 192.57.66.200 gw 192.168.2.1
鎵鏈夊幓寰192.57.66.200涓繪満鐨勬暟鎹寘鍙戝線緗戝叧鍦板潃192.168.2.1銆?br />
4銆乺oute add default gw 192.168.1.1
娣誨姞涓鏉¢粯璁ょ綉鍏籌紝鎵鏈夌殑鏁版嵁鍖呭皢琚漿鍙戝埌192.168.1.1銆?br />
璺敱琛ㄥ唴瀹硅鏄庯細
鏌ョ湅璺敱
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.57.66.200 192.168.1.1 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Destination錛氱洰鏍囩綉緇滄垨涓繪満銆?br />Gateway錛氱綉鍏沖湴鍧銆?br />Genmask錛氱洰鏍囩綉緇滅殑緗戠粶鎺╃爜銆?/span>"255.255.255.255"琛ㄧず涓涓富鏈恒?/span>"0.0.0.0"琛ㄧず緗戝叧銆?br />Flags錛氭爣璁般?br />U銆佽礬鐢辮鍚敤銆?br />H銆佺洰鏍囨槸涓涓富鏈?br />G銆佷嬌鐢ㄧ綉鍏熾?br />
]]>
for filename in $filelist
do
your-command $filename > ${filename}.new
done
]]>
鐢ㄦ埛浜や簰寮弆ogin鐨勬椂鍊欙紝灝變細鍒濆鍖杙rofile鐩稿叧鐨勮剼鏈紝榪欏氨鏄墍璋撶殑login shell銆?br />
褰撳湪宸茬粡瀛樺湪鐨剆hell閲岄潰鍚姩鍙﹀涓涓猻hell鐨勬椂鍊欙紝姣斿浣跨敤"bash"鎴栬?su"錛屽惎鍔ㄧ殑榪欎釜鏂皊hell灝變細鍒濆鍖杛c鐩稿叧 鐨勮剼鏈傝繖涓猻hell灝辯О涓簄on-login shell銆?br />
login shell浼氭墽琛岀殑鑴氭湰鏈?/etc/profile鍜寏/.bash_profile銆?br />non-login shell浼氭墽琛岀殑鑴氭湰閫氬父鏈?etc/bashrc 錛堝湪debian/ubuntu涓婃槸/etc/bash.bashrc錛夊拰~/.bashrc銆?br />
鍦╰ty涓媗ogin榪涘幓錛屽緱鍒扮殑鏄竴涓猯ogin shell銆備箣鍚庝嬌鐢╞ash鎴栬卻u鍛戒護寰楀埌鐨勬槸non-login shell銆?br />鑰屽湪debian/ubuntu涓嬬殑GNOME鐢╰erminal鍚姩鍑烘潵鐨剆hell鏄痭on-login shell銆傞鍑鴻non-login shell鐨勮瘽錛屽彧闇瑕乪xit鍗沖彲銆?br />
login shell 璇誨彇 /etc/profile 鍜?~/.bash_profile , 騫朵笖鏄?鍏堣鍏?profile 鍚庤鍏?.bash_profile, 2涓枃浠跺繀璇伙紝
鑷充簬 bash.bashrc 鍜?.bashrc 鍒欑湅 profile 鍜?.bash_profile 鏄惁鏄庣‘鎸囧畾璇匯?
]]>
all
榪欎釜浼洰鏍囨槸鎵鏈夌洰鏍囩殑鐩爣錛屽叾鍔熻兘涓鑸槸緙栬瘧鎵鏈夌殑鐩爣銆?br />
clean
榪欎釜浼洰鏍囧姛鑳芥槸鍒犻櫎鎵鏈夎make鍒涘緩鐨勬枃浠躲?br />
install
榪欎釜浼洰鏍囧姛鑳芥槸瀹夎宸茬紪璇戝ソ鐨勭▼搴忥紝鍏跺疄灝辨槸鎶婄洰鏍囨墽琛屾枃浠舵嫹璐濆埌鎸囧畾鐨勭洰鏍囦腑鍘匯?br />
print
榪欎釜浼洰鏍囩殑鍔熻兘鏄緥鍑烘敼鍙樿繃鐨勬簮鏂囦歡銆?br />
tar
榪欎釜浼洰鏍囧姛鑳芥槸鎶婃簮紼嬪簭鎵撳寘澶囦喚銆備篃灝辨槸涓涓猼ar鏂囦歡銆?br />
dist
榪欎釜浼洰鏍囧姛鑳芥槸鍒涘緩涓涓帇緙╂枃浠訛紝涓鑸槸鎶妕ar鏂囦歡鍘嬫垚Z鏂囦歡銆傛垨鏄痝z鏂囦歡銆?br />
TAGS
榪欎釜浼洰鏍囧姛鑳芥槸鏇存柊鎵鏈夌殑鐩爣錛屼互澶囧畬鏁村湴閲嶇紪璇戜嬌鐢ㄣ?br />
check鍜宼est
榪欎袱涓吉鐩爣涓鑸敤鏉ユ祴璇昺akefile鐨勬祦紼嬨?/div>
$@
琛ㄧず瑙勫垯涓殑鐩爣鏂囦歡闆嗐傚湪妯″紡瑙勫垯涓紝濡傛灉鏈夊涓洰鏍囷紝閭d箞錛?@灝辨槸鍖歸厤浜庣洰鏍囦腑妯″紡瀹氫箟鐨勯泦鍚堛?br />
$^
鎵鏈夌殑渚濊禆鐩爣鐨勯泦鍚堛備互絀烘牸鍒嗛殧銆傚鏋滃湪渚濊禆鐩爣涓湁澶氫釜閲嶅鐨勶紝閭d釜榪欎釜鍙橀噺浼氬幓闄ら噸澶嶇殑渚濊禆鐩爣錛屽彧淇濈暀涓浠姐?br />
$?
鎵鏈夋瘮鐩爣鏂扮殑渚濊禆鐩爣鐨勯泦鍚堛備互絀烘牸鍒嗛殧銆?/div>
$+
榪欎釜鍙橀噺寰堝儚$^錛屼篃鏄墍鏈変緷璧栫洰鏍囩殑闆嗗悎銆傚彧鏄畠涓嶅幓闄ら噸澶嶇殑渚濊禆鐩爣銆?br />
$%
褰撹鍒掔殑鐩爣鏂囦歡鏄簱鏂囦歡鏃訛紝$%琛ㄧず瑙勫垯涓殑鐩爣鎴愬憳鍚嶃?br />渚嬪錛屽鏋滀竴涓洰鏍囨槸foo.a(bar.o)錛岄偅涔堬紝$%灝辨槸bar.o錛?@灝辨槸foo.a銆?br />濡傛灉鐩爣涓嶆槸鍑芥暟搴撴枃浠訛紙Unix涓嬫槸[.a]錛學indows涓嬫槸[.lib]錛夛紝閭d箞鍏跺間負絀恒?br />
$<
渚濊禆鐩爣涓殑絎竴涓洰鏍囧悕瀛椼傚鏋滀緷璧栫洰鏍囨槸浠ユā寮忥紙鍗?錛夊畾涔夌殑錛岄偅涔?<灝嗘槸絎﹀悎妯″紡鐨勪竴緋誨垪鐨勬枃浠墮泦銆傛敞鎰忥紝鍏舵槸涓涓竴涓彇鍑烘潵鐨勩?br />
CC = g++ -Wall -c
OBJS = SocketServer.o
TARGETS = 0928
.PHONY:all
all:$(TARGETS)
SocketServer.o:SocketServer.cpp
$(CC) $^
0928:$(OBJS) main.cpp
$(CCLD) $@ $^
@echo make success
.PHONY:clean
clean:
#rm -rf ${OBJS}
rm -rf *.o
rm -rf $(TARGETS)
]]>
1銆亄} 澶ф嫭鍙鳳細
鐢ㄦ硶涓錛氶氶厤絎︽墿灞?br />
浠g爜:
ls my_{finger,toe}s
榪欐潯鍛戒護鐩稿綋浜庡涓嬪懡浠ょ殑緇勫悎錛?br /> ls my_fingers my_toes
mkdir {userA,userB,userC}-{home,bin,data}
鎴戜滑灝嗗緱鍒?nbsp;userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data,userC-home, userC-bin, userC-data錛岃繖鍑犱釜鐩綍
鐢ㄦ硶浜岋細鍙敤浜庤鍙ュ潡鐨勬瀯閫狅紝璇彞涔嬮棿鐢ㄥ洖杞﹂殧寮銆傚鏋滀綘鎯沖湪鏌愪簺浣跨敤鍗曚釜璇彞鐨勫湴鏂癸紙姣斿鍦ˋND鎴朞R鍒楄〃涓級浣跨敤澶氭潯璇彞錛屼綘鍙互鎶婂畠浠嫭鍦ㄨ姳鎷彿{}涓潵鏋勯犱竴涓鍙ュ潡銆?br />
浠g爜:
grep -v "$cdcatnum" $strack_file > $temp_file
cat $temp_file > $strack_file
echo
cat -n file1
(娉細浠ヤ笂澶ф嫭鍙蜂腑鐨勫洓鍙ュ懡浠ゅ鎴愪簡涓涓鍙ュ潡)
鐢ㄦ硶涓夛細鍙傛暟鎵╁睍
浠g爜:
${name:-default} 浣跨敤涓涓粯璁ゅ鹼紙涓鑸槸絀哄鹼級鏉ヤ唬鏇塊偅浜涚┖鐨勬垨鑰呮病鏈夎祴鍊肩殑鍙橀噺name錛?br /> ${name:=default}浣跨敤鎸囧畾鍊兼潵浠f浛絀虹殑鎴栬呮病鏈夎祴鍊肩殑鍙橀噺name錛?br /> ${name:?message}濡傛灉鍙橀噺涓虹┖鎴栬呮湭璧嬪鹼紝閭d箞灝變細鏄劇ず鍑洪敊璇俊鎭茍涓鑴氭湰鐨勬墽琛屽悓鏃惰繑鍥為鍑虹爜1銆?br /> ${#name} 緇欏嚭name鐨勯暱搴?/span>
${name%word} 浠巒ame鐨勫熬閮ㄥ紑濮嬪垹闄や笌word鍖歸厤鐨勬渶灝忛儴鍒嗭紝鐒跺悗榪斿洖鍓╀綑閮ㄥ垎
${name%%word} 浠巒ame鐨勫熬閮ㄥ紑濮嬪垹闄や笌word鍖歸厤鐨勬渶闀塊儴鍒嗭紝鐒跺悗榪斿洖鍓╀綑閮ㄥ垎
${name#word} 浠巒ame鐨勫ご閮ㄥ紑濮嬪垹闄や笌word鍖歸厤鐨勬渶灝忛儴鍒嗭紝鐒跺悗榪斿洖鍓╀綑閮ㄥ垎
${name##word} 浠巒ame鐨勫ご閮ㄥ紑濮嬪垹闄や笌word鍖歸厤鐨勬渶闀塊儴鍒嗭紝鐒跺悗榪斿洖鍓╀綑閮ㄥ垎
錛堟敞錛宯ame涓哄彉閲忓悕錛寃ord涓鴻鍖歸厤鐨勫瓧絎︿覆錛?br />鐢ㄦ硶涓夊湪澶勭悊瀛楃涓插拰鏈煡鍙橀噺鏃訛紝鏄緢鏈夌敤鐨勩?br />
2銆乕] 涓嫭鍙鳳細
鐢ㄦ硶涓錛氶氶厤絎︽墿灞曪細
鍏佽鍖歸厤鏂規嫭鍙蜂腑浠諱綍涓涓崟涓瓧絎?br />
浠g爜:
ls /[eh][to][cm]*
鐩稿綋浜庢墽琛?nbsp;ls /etc /home錛堣嫢鏈?/span>/eom鐩綍錛屽氨鐩稿綋浜庝細鎵цls /etc /home /eom錛?br />娉細鍦╩kdir鍛戒護涓嬩笉鑳芥墿灞?br />鐢ㄦ硶浜岋細鐢ㄤ簬鏉′歡鍒ゆ柇絎﹀彿錛?br />[]絎﹀彿鍙悊瑙d負鎸囧悜test鍛戒護鐨勪竴涓蔣閾炬帴錛屾墍浠ュ叾鐢ㄦ硶鍙畬鍏ㄥ弬鐓est錛屽皢test浣嶇疆鏇挎崲涓篬渚垮彲銆?br />
浠g爜:
if [ "$?" != 0 ] 絳変環浜?nbsp;if test "$?" != 0
then echo "Executes error"
3銆乣command` 鍙嶅紩鍙鳳細
`command`涓?(command)鐨勫惈涔夌浉鍚岋紝閮芥槸榪斿洖褰撳墠鎵ц鍛戒護鐨勭粨鏋?br />
浠g爜:
#!/bin/sh
for file in $(ls f*.sh);do
lpr $file
done
exit 0
璇ヤ緥瀹炵幇浜嗘墿灞昮*.sh緇欏嚭鎵鏈夊尮閰嶆ā寮忕殑鏂囦歡鐨勫悕瀛椼?br />
4銆?/span>'string' 鍗曞紩鍙?nbsp;鍜?nbsp;"string" 鍙屽紩鍙?br />鍙屽紩鍙鳳細濡傛灉鎯沖湪瀹氫箟鐨勫彉閲忎腑鍔犲叆絀烘牸錛屽氨蹇呴』浣跨敤鍗曞紩鍙鋒垨鍙屽紩鍙鳳紝
鍗曘佸弻寮曞彿鐨勫尯鍒湪浜庡弻寮曞彿杞箟鐗規畩瀛楃鑰屽崟寮曞彿涓嶈漿涔夌壒孌婂瓧絎?br />
浠g爜:
$ heyyou=home
$ echo '$heyyou'
$ $heyyou 錛?/span>$娌℃湁杞箟錛?br /> eg: $ heyyou=home
$ echo "$heyyou"
$ home 錛堝緢鏄庢樉錛?/span>$杞箟浜嗚緭鍑轟簡heyyou鍙橀噺鐨勫?/span>錛?br />
5銆?# 瀹冪殑浣滅敤鏄憡璇変綘寮曠敤鍙橀噺鐨勬繪暟閲忔槸澶氬皯錛?/span>
浠g爜:
$$ 瀹冪殑浣滅敤鏄憡璇変綘shell鑴氭湰鐨勮繘紼嬪彿錛?br /> $* 浠ヤ竴涓崟瀛楃涓叉樉紺烘墍鏈夌殑鑴氭湰浼犻掔殑鍙傛暟銆傜瓑浠蜂簬$1 $2 $3
.錛?br /> $@ 涓?*鍩烘湰綾諱技錛堝弬瑙佸簭鍙?錛夛紝浣嗗湪鏁扮粍璧嬪兼椂鏈変簺涓嶅悓錛?br /> $? 鍓嶄竴涓懡浠ょ殑閫鍑虹爜錛?br /> $- 鏄劇ずshell浣跨敤鐨勫綋鍓嶉夐」錛?br /> $! 鏈鍚庝竴涓悗鍙拌繍琛岀殑榪涚▼ID鍙楓?br />
6銆?((
))璇硶錛氬鎷彿鍐呯殑琛ㄨ揪寮忔眰鍊?br />
浠g爜:
#!/bin/sh
x=0
hile [ "$x" -ne 10 ];do
echo $x
x=$(($x+1))
done
exit 0
7銆乻hell涓嚑縐嶇壒孌婄殑鍙傛暟鍙橀噺鐨勫紩鐢?br />
浠g爜:
$1銆?2銆?3……${10}銆?{11}銆?{12}…… 錛氳〃紺鴻剼鏈紶鍏ョ殑鐨勫悇涓弬鏁幫紝娉ㄦ剰褰撻渶琛ㄧず涓や綅鏁頒互鍚庣殑鍙傛暟鏃舵暟瀛楄鐢ㄨ姳鎷彿鎷搗銆?br /> $@ 鍒楀嚭鎵鏈夌殑鍙傛暟錛屽悇鍙傛暟鐢ㄧ┖鏍奸殧寮
$*: 鍒楀嚭鎵鏈夌殑鍙傛暟錛屽悇鍙傛暟鐢ㄧ幆澧冨彉閲廔FS鐨勭涓涓瓧絎﹂殧寮
8銆佸懡浠ゅ垪琛細
AND鍒楄〃 statement1 && statement2 && statement3 && …:鍙湁鍦ㄥ墠闈㈡墍鏈夌殑鍛戒護閮芥墽琛屾垚鍔熺殑鎯呭喌涓嬫墠鎵ц鍚庝竴鏉″懡浠?br />OR鍒楄〃 statement1 || statement2 || statement3 || …:鍏佽鎵ц涓緋誨垪鍛戒護鐩村埌鏈変竴鏉″懡浠ゆ垚鍔熶負姝紝鍏跺悗鎵鏈夊懡浠ゅ皢涓嶅啀琚墽琛?br />#!/bin/sh
浠g爜:
touch file_one
rm -f file_two
if [ -f file_one ] && echo "hello" && [ -f file_two ] && echo " there"
then
echo "in if"
else
echo "in else"
fi
exit 0
涓婁緥鐨勮緭鍑轟負錛?br />
浠g爜:
hello
in else
鍏充簬AND鍒楄〃涓嶰R鍒楄〃錛屽湪閫昏緫鍒ゆ柇涓緢浣跨敤錛屼笅闈㈠氨涓句竴涓叾鏈甯哥敤鐨勪緥瀛愶細
浠g爜:
[ condition ] && command for true || command for false:
褰撴潯浠朵負鐪熸椂錛屾墽琛宑ommandfor true ,褰撴潯浠朵負鍋囨椂錛屾墽琛宑ommand for false
9銆?/span>: 鍐掑彿錛氬唴寤虹┖鎸囦護錛岃繑鍥炲間負0
浠g爜:
$ :
$ echo $?
$ 0
while: (璇ヨ鍙ョ粨鏋勫彲瀹炵幇涓涓棤闄愬驚鐜?
10銆? 鍒嗗彿: 鍦?nbsp;shell 涓紝鎷呬換"榪炵畫鎸囦護"鍔熻兘鐨勭鍙峰氨鏄?/span>"鍒嗗彿"
浠g爜:
cd ~/backup ; mkdir startup ; cp ~/.* startup/.
11銆?/span># 浜曞彿錛氳〃紺虹鍙峰悗闈㈢殑鏄敞瑙f枃瀛楋紝涓嶄細琚墽琛岋紱
浠g爜:
* 鍖歸厤鏂囦歡鍚嶄腑鐨勪換浣曞瓧絎︼紝鍖呮嫭瀛楃涓詫紱
? 鍖歸厤鏂囦歡鍚嶄腑鐨勪換浣曞崟涓瓧絎︺?br /> ~ 浠h〃浣跨敤鑰呯殑 home 鐩綍
12銆?/span>\ 鍙嶆枩綰匡細
鏀懼湪鎸囦護鍓嶏紝鏈夊彇娑?nbsp;aliases錛堝埆鍚嶏級 鐨勪綔鐢紱
鏀懼湪鐗規畩絎﹀彿鍓嶏紝鍒欒鐗規畩絎﹀彿鐨勪綔鐢ㄦ秷澶憋紱
鏀懼湪鎸囦護鐨勬渶鏈錛岃〃紺烘寚浠よ繛鎺ヤ笅涓琛岋紙浣垮緱鍥炶濺絎︽棤鏁堬紝鍙搗鎹㈣浣滅敤錛?br />
13銆?/span>! 鎰熷徆鍙鳳細
閫氬父瀹冧唬琛ㄥ弽閫昏緫鐨勪綔鐢紝璀鏉′歡渚︽祴涓紝鐢?nbsp;!= 鏉ヤ唬琛?/span>"涓嶇瓑浜?/span>"
14銆?/span>** 嬈℃柟榪愮畻錛氫袱涓槦鍙峰湪榪愮畻鏃朵唬琛?nbsp;"嬈℃柟" 鐨勬剰鎬?br />浠g爜:
let "sus=2**3"
echo "sus = $sus"
$ sus = 8 -
]]>
榪欒浠g爜閫氱煡涔hell浣跨敤緋葷粺涓婄殑Bourne shell瑙f瀽鍣?
shell璇硶
test 鍛戒護
1.鏉′歡嫻嬭瘯
test鍛戒護鐢ㄤ簬嫻嬭瘯瀛楃涓?/span>,鏂囦歡鐘舵佸拰鏁板瓧.
宸ヤ綔鍘熺悊
test 鍛戒護鏈鐭殑瀹氫箟鍙兘鏄瘎浼頒竴涓〃杈懼紡錛涘鏋滄潯浠朵負鐪燂紝鍒欒繑鍥炰竴涓?nbsp;0 鍊箋傚鏋滆〃杈懼紡涓嶄負鐪燂紝榪斿洖闈?
test涓鑸湁涓ょ鏍煎紡:
test 鏉′歡琛ㄨ揪寮?br />鎴?br />[ 鏉′歡琛ㄨ揪寮?nbsp;]
浣跨敤鏂規嫭鍙鋒椂,瑕佹敞鎰忓湪鏉′歡涓よ竟鍔犱笂絀烘牸.
鏂囦歡榪愮畻絎?br />鍒╃敤榪欎簺榪愮畻絎︼紝鎮ㄥ彲浠ュ湪紼嬪簭涓牴鎹鏂囦歡綾誨瀷鐨勮瘎浼扮粨鏋滄墽琛屼笉鍚岀殑鎿嶄綔錛?br />-b file 濡傛灉鏂囦歡涓轟竴涓潡鐗規畩鏂囦歡錛屽垯涓虹湡
-c file 濡傛灉鏂囦歡涓轟竴涓瓧絎︾壒孌婃枃浠訛紝鍒欎負鐪?br />-d file 濡傛灉鏂囦歡涓轟竴涓洰褰曪紝鍒欎負鐪?br />-e file 濡傛灉鏂囦歡瀛樺湪錛屽垯涓虹湡
-f file 濡傛灉鏂囦歡涓轟竴涓櫘閫氭枃浠訛紝鍒欎負鐪?br />-g file 濡傛灉璁劇疆浜嗘枃浠剁殑 SGID 浣嶏紝鍒欎負鐪?br />-G file 濡傛灉鏂囦歡瀛樺湪涓斿綊璇ョ粍鎵鏈夛紝鍒欎負鐪?br />-k file 濡傛灉璁劇疆浜嗘枃浠剁殑綺樼潃浣嶏紝鍒欎負鐪?br />-O file 濡傛灉鏂囦歡瀛樺湪騫朵笖褰掕鐢ㄦ埛鎵鏈夛紝鍒欎負鐪?br />-p file 濡傛灉鏂囦歡涓轟竴涓懡鍚嶇閬擄紝鍒欎負鐪?br />-r file 濡傛灉鏂囦歡鍙錛屽垯涓虹湡
-s file 濡傛灉鏂囦歡鐨勯暱搴︿笉涓洪浂錛屽垯涓虹湡
-S file 濡傛灉鏂囦歡涓轟竴涓鎺ュ瓧鐗規畩鏂囦歡錛屽垯涓虹湡
-t fd 濡傛灉 fd 鏄竴涓笌緇堢鐩歌繛鐨勬墦寮鐨勬枃浠舵弿榪扮錛坒d 榛樿涓?nbsp;1錛夛紝鍒欎負鐪?br />-u file 濡傛灉璁劇疆浜嗘枃浠剁殑 SUID 浣嶏紝鍒欎負鐪?br />-w file 濡傛灉鏂囦歡鍙啓錛屽垯涓虹湡
-x file 濡傛灉鏂囦歡鍙墽琛岋紝鍒欎負鐪?br />
瀛楃涓叉瘮杈冭繍綆楃
濡傛爣棰樻墍紺猴紝榪欑粍鍑芥暟姣旇緝瀛楃涓茬殑鍊箋傛偍鍙互媯鏌ュ畠浠槸鍚﹀瓨鍦ㄣ佹槸鍚︾浉鍚屾垨鑰呮槸鍚︿笉鍚屻?br />string 嫻嬭瘯浠ュ垽鏂瓧絎︿覆鏄惁涓嶄負絀?br />-n string 嫻嬭瘯浠ュ垽鏂瓧絎︿覆鏄惁涓嶄負絀猴紱
-z string 嫻嬭瘯浠ュ垽鏂瓧絎︿覆鏄惁涓虹┖錛?br />string1 = string2 嫻嬭瘯浠ュ垽鏂?nbsp;string1 鏄惁涓?nbsp;string2 鐩稿悓
string1 != string2 嫻嬭瘯浠ュ垽鏂?nbsp;string1 鏄惁涓?nbsp;string2 涓嶅悓
鏁存暟姣旇緝榪愮畻絎?br />姝e瀛楃涓叉瘮杈冭繍綆楃楠岃瘉瀛楃涓茬浉絳夋垨涓嶅悓涓鏍鳳紝鏁存暟姣旇緝榪愮畻絎﹀鏁板瓧鎵ц鐩稿悓鐨勫姛鑳姐?br />濡傛灉鍙橀噺鐨勫煎尮閰嶅垯琛ㄨ揪寮忔祴璇曚負鐪燂紝濡傛灉涓嶅尮閰嶏紝鍒欎負鍋囥傛暣鏁版瘮杈冭繍綆楃涓嶅鐞嗗瓧絎︿覆錛堟濡傚瓧絎︿覆榪愮畻絎︿笉澶勭悊鏁板瓧涓鏍鳳級錛?br />-eq 絳変簬
-ge 澶т簬鎴栫瓑浜?br />-gt 澶т簬
-le 灝忎簬鎴栫瓑浜?br />-lt 灝忎簬
-ne 涓嶇瓑浜?br />濡?/span>:
# [ 2 -gt 3 ]
# echo $?
1
# [ 2 -lt 3 ]
# echo $?
0
甯冨皵榪愮畻絎?br />甯冨皵榪愮畻絎﹀湪鍑犱箮姣忕璇█涓殑宸ヤ綔鏂瑰紡閮界浉鍚?nbsp;— 鍖呮嫭 shell 鑴氭湰銆傚湪 nutshell 涓紝瀹冧滑媯鏌ュ涓潯浠朵負鐪熸垨涓哄亣錛屾垨鑰呴拡瀵瑰亣鐨勬潯浠惰屼笉鏄湡鐨勬潯浠墮噰鍙栨搷浣溿備笌 test 鎼厤浣跨敤鐨勮繍綆楃鏈?/span>:
! 鏉′歡闈?br />-a 鏉′歡涓?br />-o 鏉′歡鎴?br />
鎺у埗緇撴瀯
鏃犺浠涔堢紪紼嬭璦閮界涓嶅紑鏉′歡鍒ゆ柇銆係HELL涔熶笉渚嬪銆?br />鏉′歡鍒嗘敮
if璇彞
璇硶1:
if 鏉′歡琛ㄨ揪寮?br /> then 鍛戒護
fi
璇硶2:
if 鏉′歡琛ㄨ揪寮? then
do something here
elif 鏉′歡琛ㄨ揪寮?nbsp;then
do another thing here
else
do something else here
fi
浣跨敤if鏃?/span>,蹇呴』灝唗hen閮ㄥ垎鏀懼湪鏂拌,鍚﹀垯浼氭姤閿?/span>.
濡傛灉瑕佷笉鍒嗚,蹇呴』浣跨敤鍛戒護鍒嗛殧絎?/span>.
gw()
{
echo "do function gw()"
return 0
}
then
echo "run succeed"
echo "run succeed"
else
echo "run failed"
echo "run failed"
fi
if 澶氭潯鎸囦護,榪欎簺鍛戒護涔嬮棿鐩稿綋浜?#8220;and”錛堜笌錛?br />
case璇彞
case鍛戒護鍙被姣擟璇█鐨剆witch/case璇彞錛宔sac琛ㄧずcase璇彞鍧楃殑緇撴潫銆?br />姣忎釜鍖歸厤鍒嗘敮鍙互鏈夎嫢騫叉潯鍛戒護錛屾湯灝懼繀欏諱互;;緇撴潫錛屾墽琛屾椂鎵懼埌絎竴涓尮閰嶇殑鍒嗘敮騫舵墽琛岀浉搴旂殑鍛戒護錛岀劧鍚庣洿鎺ヨ煩鍒癳sac涔嬪悗錛屼笉闇瑕佸儚C璇█涓鏍風敤break璺沖嚭銆?br />濡?/span>:
#! /bin/sh
echo "Is it morning? Please answer yes or no."
read YES_OR_NO
case "$YES_OR_NO" in
yes|y|Yes|YES)
echo "Good Morning!";;
[nN]*)
echo "Good Afternoon!";;
*)
echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."
exit 1;;
esac
exit 0
for璇彞
for 鍙橀噺鍚?nbsp;in 鍒楄〃
do
鍛戒護1
鍛戒護2
done
Shell鑴氭湰鐨刦or寰幆緇撴瀯鍜孋璇█寰堜笉涓鏍鳳紝瀹冪被浼紁hp緙栫▼璇█鐨刦oreach寰幆銆備緥濡傦細
#!/bin/sh
for FRUIT in apple banana pear; do
echo "I like $FRUIT"
done
while/do/done
while鐨勭敤娉曞拰C璇█綾諱技銆傛瘮濡備竴涓獙璇佸瘑鐮佺殑鑴氭湰錛?br />
#!/bin/sh
echo "Enter password:"
read TRY
while [ "$TRY" != "secret" ]; do
echo "Sorry, try again"
read TRY
done
浣嶇疆鍙傛暟鍜岀壒孌婂彉閲?br />$0 鐩稿綋浜嶤璇█main鍑芥暟鐨刟rgv[0]
$1銆?2
榪欎簺縐頒負浣嶇疆鍙傛暟錛圥ositional Parameter錛夛紝鐩稿綋浜嶤璇█main鍑芥暟鐨刟rgv[1]銆乤rgv[2]
$# 鍙傛暟涓暟,涓嶅寘鎷▼搴忚嚜韜?鐩稿綋浜嶤璇█main鍑芥暟鐨刟rgc-1
$@ 琛ㄧず鍙傛暟鍒楄〃"$1" "$2"
錛屼緥濡傚彲浠ョ敤鍦╢or寰幆涓殑in鍚庨潰銆?br />$? 涓婁竴鏉″懡浠ょ殑Exit Status
$$ 褰撳墠Shell鐨勮繘紼嬪彿
浣嶇疆鍙傛暟鍙互鐢╯hift鍛戒護宸︾Щ銆?br />姣斿shift 3琛ㄧず鍘熸潵鐨?4鐜板湪鍙樻垚$1錛屽師鏉ョ殑$5鐜板湪鍙樻垚$2絳夌瓑錛屽師鏉ョ殑$1銆?2銆?3涓㈠純錛?0涓嶇Щ鍔ㄣ備笉甯﹀弬鏁扮殑shift鍛戒護鐩稿綋浜巗hift 1銆?br />
鍑芥暟
鍜孋璇█綾諱技錛孲hell涓篃鏈夊嚱鏁扮殑姒傚康錛屼絾鏄嚱鏁板畾涔変腑娌℃湁榪斿洖鍊間篃娌℃湁鍙傛暟鍒楄〃銆備緥濡傦細
#!/bin/sh
foo(){ echo "Function foo is called";}
echo "-=start=-"
foo
echo "-=end=-"
娉ㄦ剰鍑芥暟浣撶殑宸﹁姳鎷彿{鍜屽悗闈㈢殑鍛戒護涔嬮棿蹇呴』鏈夌┖鏍兼垨鎹㈣錛屽鏋滃皢鏈鍚庝竴鏉″懡浠ゅ拰鍙寵姳鎷彿}鍐欏湪鍚屼竴琛岋紝鍛戒護鏈熬蹇呴』鏈?鍙楓?br />
鍦ㄥ畾涔塮oo()鍑芥暟鏃跺茍涓嶆墽琛屽嚱鏁頒綋涓殑鍛戒護錛屽氨鍍忓畾涔夊彉閲忎竴鏍鳳紝鍙槸緇檉oo榪欎釜鍚嶅瓧涓涓畾涔夛紝鍒板悗闈㈣皟鐢╢oo鍑芥暟鐨勬椂鍊欙紙娉ㄦ剰Shell涓殑鍑芥暟璋冪敤涓嶅啓鎷彿錛夋墠鎵ц鍑芥暟浣撲腑鐨勫懡浠ゃ係hell鑴氭湰涓殑鍑芥暟蹇呴』鍏堝畾涔夊悗璋冪敤錛屼竴鑸妸鍑芥暟瀹氫箟閮藉啓鍦ㄨ剼鏈殑鍓嶉潰錛屾妸鍑芥暟璋冪敤鍜屽叾瀹冨懡浠ゅ啓鍦ㄨ剼鏈殑鏈鍚庯紙綾諱技C璇█涓殑main鍑芥暟錛岃繖鎵嶆槸鏁翠釜鑴氭湰瀹為檯寮濮嬫墽琛屽懡浠ょ殑鍦版柟錛夈?br />
Shell鍑芥暟娌℃湁鍙傛暟鍒楄〃騫朵笉琛ㄧず涓嶈兘浼犲弬鏁幫紝浜嬪疄涓婏紝鍑芥暟灝卞儚鏄糠浣犺剼鏈紝璋冪敤鍑芥暟鏃跺彲浠ヤ紶浠繪剰涓弬鏁幫紝鍦ㄥ嚱鏁板唴鍚屾牱鏄敤$0銆?1銆?2絳夊彉閲忔潵鎻愬彇鍙傛暟錛屽嚱鏁頒腑鐨勪綅緗弬鏁扮浉褰撲簬鍑芥暟鐨勫眬閮ㄥ彉閲忥紝鏀瑰彉榪欎簺鍙橀噺騫朵笉浼氬獎鍝嶅嚱鏁板闈㈢殑$0銆?1銆?2絳夊彉閲忋傚嚱鏁頒腑鍙互鐢╮eturn鍛戒護榪斿洖錛屽鏋渞eturn鍚庨潰璺熶竴涓暟瀛楀垯琛ㄧず鍑芥暟鐨凟xit Status銆?br />
until璇彞
until寰幆鎵ц涓緋誨垪鍛戒護鐩磋嚦鏉′歡涓虹湡鏃跺仠姝€傛敞鎰?/span>,榪欓噷鏄洿鍒版潯浠舵槸鐪熸椂鎵嶅仠姝?br />until鏍煎紡涓猴細
until 鏉′歡
鍛戒護1

done
i=0
until [ $i -gt 3 ]
do
i=`expr "$i" + 1`
#i=$(($i + 1))
echo $i
done
]]>