锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲人成网国产最新在线,久久精品国产亚洲,亚洲白嫩在线观看http://www.tkk7.com/jzone/category/40638.htmljava web, java wap ..My laboratory..zh-cnSun, 29 Nov 2009 21:25:45 GMTSun, 29 Nov 2009 21:25:45 GMT60鍚戣剼鏈紶閫掑弬鏁?/title><link>http://www.tkk7.com/jzone/articles/304093.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sun, 29 Nov 2009 04:10:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/304093.html</guid><description><![CDATA[<h3 class="" title="闅忕瑪"><a ></a> </h3> <div id="qfsnqeo" class="blog_content"><strong><span style="font-size: medium">shift鍛戒護</span></strong> <br /> 鍚戣剼鏈紶閫掑弬鏁版椂錛屾湁鏃墮渶瑕佸皢姣忎竴涓弬鏁板亸縐諱互澶勭悊閫夐」錛岃繖灝辨槸 shift鍛戒護鐨勫姛鑳姐傚畠姣忔灝嗗弬鏁頒綅緗悜宸﹀亸縐諱竴浣嶏紝涓嬮潰鐢ㄤ竴孌電畝鍗曡剼鏈榪板叾鍔熻兘銆傝剼鏈嬌鐢?while寰幆鍙嶉鎵鏈変紶閫掑埌鑴氭湰鐨勫弬鏁般備嬌鐢╯hift鍛戒護鏉ュ鐞嗕紶閫掑埌鑴氭湰鐨勬瘡涓涓弬鏁幫細 <br /> <div id="zezovcy" class="dp-highlighter"> <div id="dmwdell" class="bar"> <div id="kuwhglg" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>#!/bin/sh   </span></span></li> <li><span>loop=</span><span id="ihzbemw" class="number">0</span><span>  </span></span></li> <li><span>while [ $# -ne </span><span id="kqjelax" class="number">0</span><span> ]   </span></span></li> <li><span>do    </span></li> <li><span>   echo $</span><span id="jtewlpq" class="number">1</span><span>  </span></span></li> <li><span>   shift   </span></li> <li><span>done  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">#!/bin/sh loop=0 while [ $# -ne 0 ] do echo $1 shift done </pre> <br /> 浣跨敤shift澶勭悊鏂囦歡澶у皬鍐欒漿鎹?<br /> <div id="buxjrnb" class="dp-highlighter"> <div id="zbxfcgr" class="bar"> <div id="wbjklah" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>!#/bin/sh   </span></span></li> <li><span># tr_case   </span></li> <li><span># convert files to either  upper or lower case   </span></li> <li><span>FILES=</span><span id="sxelpqn" class="string">""</span><span>  </span></span></li> <li><span>TRCASE=</span><span id="vgseqmf" class="string">""</span><span>  </span></span></li> <li><span>EXT=</span><span id="yitbfxj" class="string">""</span><span>  </span></span></li> <li><span>OPT=no   </span></li> <li><span>  </span></li> <li><span># gets called when a conversion fails   </span></li> <li><span>error_msg()   </span></li> <li><span>{   </span></li> <li><span>_FILENAME=$</span><span id="rwsltiy" class="number">1</span><span>  </span></span></li> <li><span>echo </span><span id="anrzzkv" class="string">"`basename $0`: Error the conversion failed on $_FILENAME"</span><span>  </span></span></li> <li><span>}   </span></li> <li><span>  </span></li> <li><span>if [ $# -eq </span><span id="nqgaedt" class="number">0</span><span> ]   </span></span></li> <li><span>then    </span></li> <li><span>   echo </span><span id="fcroxie" class="string">"For more info try `basename $0` --help"</span><span>  </span></span></li> <li><span>   exit </span><span id="ocygwle" class="number">1</span><span>  </span></span></li> <li><span>fi   </span></li> <li><span>  </span></li> <li><span>while [ $# -gt </span><span id="pimqydo" class="number">0</span><span> ]   </span></span></li> <li><span>do   </span></li> <li><span>  case $</span><span id="kgcvwzh" class="number">1</span><span> in   </span></span></li> <li><span>  #set the variables based on what option was used   </span></li> <li><span>  -u)TRCASE=upper   </span></li> <li><span>     EXT=</span><span id="mtbnode" class="string">".UC"</span><span>  </span></span></li> <li><span>     OPT=yes   </span></li> <li><span>     shift   </span></li> <li><span>     ;;   </span></li> <li><span>  -l)TRCASE=lower   </span></li> <li><span>     EXT=</span><span id="txvuofu" class="string">".LC"</span><span>  </span></span></li> <li><span>     OPT=yes   </span></li> <li><span>     shift   </span></li> <li><span>     ;;   </span></li> <li><span>  -help) echo </span><span id="ouqukhd" class="string">"convert a file(s) to uppercase from lowercase"</span><span>  </span></span></li> <li><span>         echo </span><span id="njyolem" class="string">"convert a file(s) from lowercase to uppercase"</span><span>  </span></span></li> <li><span>         echo </span><span id="toowaae" class="string">"will convert all characters according to the sepcified command option."</span><span>  </span></span></li> <li><span>         echo </span><span id="pemuykr" class="string">"where option is"</span><span>  </span></span></li> <li><span>         echo </span><span id="ehwweeo" class="string">"-l Convert to lowercase"</span><span>  </span></span></li> <li><span>         echo </span><span id="jhuqyjg" class="string">"-u Convert to uppercase"</span><span>  </span></span></li> <li><span>         echo </span><span id="gfrigay" class="string">"The original file(s) is not touched. A new file(s)"</span><span>  </span></span></li> <li><span>         echo </span><span id="qhblyar" class="string">"will be created with either a .UC or .LC extension"</span><span>  </span></span></li> <li><span>         echo </span><span id="mxzmuwc" class="string">"usage: $0 -[l|u] file [file..]"</span><span>  </span></span></li> <li><span>     exit </span><span id="otnvtvt" class="number">0</span><span>  </span></span></li> <li><span>     ;;   </span></li> <li><span>    -*) echo </span><span id="btgxzwl" class="string">"usage: `basename $0` -[l|u] file [file..]"</span><span>  </span></span></li> <li><span>     exit </span><span id="gvmkmgs" class="number">1</span><span>  </span></span></li> <li><span>     ;;   </span></li> <li><span>  </span></li> <li><span>     *) # collect the files to process   </span></li> <li><span>     if [ -f $</span><span id="zedxkxg" class="number">1</span><span> ]   </span></span></li> <li><span>       then   </span></li> <li><span>           # add the filenames to a variable list   </span></li> <li><span>           FILES=$FILES</span><span id="wwmguwf" class="string">" "</span><span>$</span><span id="kljtbzf" class="number">1</span><span>  </span></span></li> <li><span>       else   </span></li> <li><span>           echo </span><span id="ltsmrmh" class="string">"`basename $0` : Error cannot find the file $1"</span><span>  </span></span></li> <li><span>     fi   </span></li> <li><span>     shift   </span></li> <li><span>     ;;   </span></li> <li><span>   esac   </span></li> <li><span>done   </span></li> <li><span>  </span></li> <li><span>if [ </span><span id="jobkaid" class="string">"$OPT"</span><span> = </span><span id="wrtztns" class="string">"no"</span><span> ]   </span></span></li> <li><span>then   </span></li> <li><span>   echo </span><span id="muzbcwq" class="string">"`basename $0`: Error you need to specify an option. No action taken"</span><span>  </span></span></li> <li><span>   echo </span><span id="zoqajyh" class="string">"`basename` --help"</span><span>  </span></span></li> <li><span>   exit </span><span id="pbbwltu" class="number">1</span><span>  </span></span></li> <li><span>fi   </span></li> <li><span>             </span></li> <li><span># now read in all the file(s)   </span></li> <li><span># use the variable LOOP, I just love the word LOOP   </span></li> <li><span>for LOOP in $FILES   </span></li> <li><span>do   </span></li> <li><span> case $TRCASE in   </span></li> <li><span> lower) cat $LOOP|tr </span><span id="bcpzena" class="string">"[a-z]"</span><span> </span><span id="nfwefcw" class="string">"[A-Z]"</span><span> >$LOOP$EXT   </span></span></li> <li><span>    if [ $? != </span><span id="lkhyljl" class="number">0</span><span> ]   </span></span></li> <li><span>       then    </span></li> <li><span>       error_msg $LOOP   </span></li> <li><span>    else   </span></li> <li><span>       echo </span><span id="meexbfm" class="string">"Converted file called $LOOP$EXT"</span><span>  </span></span></li> <li><span>    fi   </span></li> <li><span>    ;;   </span></li> <li><span> upper) cat $LOOP|tr </span><span id="pyazivf" class="string">"[A-Z]"</span><span> </span><span id="qfovjrw" class="string">"[a-z]"</span><span> > $LOOP$EXT   </span></span></li> <li><span>    if [ $? != </span><span id="agevmbx" class="number">0</span><span> ]   </span></span></li> <li><span>    then   </span></li> <li><span>       error_msg $LOOP   </span></li> <li><span>    else   </span></li> <li><span>       echo </span><span id="krpfsio" class="string">"Converted file called $LOOP$EXT"</span><span>  </span></span></li> <li><span>    fi   </span></li> <li><span>    ;;   </span></li> <li><span>  esac   </span></li> <li><span>done  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">!#/bin/sh # tr_case # convert files to either upper or lower case FILES="" TRCASE="" EXT="" OPT=no # gets called when a conversion fails error_msg() { _FILENAME=$1 echo "`basename $0`: Error the conversion failed on $_FILENAME" } if [ $# -eq 0 ] then echo "For more info try `basename $0` --help" exit 1 fi while [ $# -gt 0 ] do case $1 in #set the variables based on what option was used -u)TRCASE=upper EXT=".UC" OPT=yes shift ;; -l)TRCASE=lower EXT=".LC" OPT=yes shift ;; -help) echo "convert a file(s) to uppercase from lowercase" echo "convert a file(s) from lowercase to uppercase" echo "will convert all characters according to the sepcified command option." echo "where option is" echo "-l Convert to lowercase" echo "-u Convert to uppercase" echo "The original file(s) is not touched. A new file(s)" echo "will be created with either a .UC or .LC extension" echo "usage: $0 -[l|u] file [file..]" exit 0 ;; -*) echo "usage: `basename $0` -[l|u] file [file..]" exit 1 ;; *) # collect the files to process if [ -f $1 ] then # add the filenames to a variable list FILES=$FILES" "$1 else echo "`basename $0` : Error cannot find the file $1" fi shift ;; esac done if [ "$OPT" = "no" ] then echo "`basename $0`: Error you need to specify an option. No action taken" echo "`basename` --help" exit 1 fi # now read in all the file(s) # use the variable LOOP, I just love the word LOOP for LOOP in $FILES do case $TRCASE in lower) cat $LOOP|tr "[a-z]" "[A-Z]" >$LOOP$EXT if [ $? != 0 ] then error_msg $LOOP else echo "Converted file called $LOOP$EXT" fi ;; upper) cat $LOOP|tr "[A-Z]" "[a-z]" > $LOOP$EXT if [ $? != 0 ] then error_msg $LOOP else echo "Converted file called $LOOP$EXT" fi ;; esac done </pre> <br /> <strong><span style="font-size: medium">getopts鍛戒護</span></strong> <br /> <div id="mqfvlyt" class="dp-highlighter"> <div id="ifyrays" class="bar"> <div id="wycphum" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>#!/bin/sh   </span></span></li> <li><span>#getopts1   </span></li> <li><span>#set the vars   </span></li> <li><span>ALL=false   </span></li> <li><span>HELP=false   </span></li> <li><span>FILE=false   </span></li> <li><span>VERBROSE=false   </span></li> <li><span>  </span></li> <li><span>while getopts ahfgv OPTION   </span></li> <li><span>do   </span></li> <li><span>  case $OPTION in   </span></li> <li><span>  a)ALL=true   </span></li> <li><span>    echo </span><span id="ptiqmtf" class="string">"ALL is $ALL"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  h)HELP=true   </span></li> <li><span>    echo </span><span id="knxkiyz" class="string">"HELP is $HELP"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  f)FILE=true   </span></li> <li><span>    echo </span><span id="qiizknf" class="string">"FILE is $FILE"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  v)VERBOSE=true   </span></li> <li><span>    echo </span><span id="qtvfajd" class="string">"VERROSE is $VERROSE"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  esac   </span></li> <li><span>done  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">#!/bin/sh #getopts1 #set the vars ALL=false HELP=false FILE=false VERBROSE=false while getopts ahfgv OPTION do case $OPTION in a)ALL=true echo "ALL is $ALL" ;; h)HELP=true echo "HELP is $HELP" ;; f)FILE=true echo "FILE is $FILE" ;; v)VERBOSE=true echo "VERROSE is $VERROSE" ;; esac done </pre> <br /> <div id="sbabodo" class="dp-highlighter"> <div id="ofukkko" class="bar"> <div id="qnofdvt" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy/getopts >getopts1 -a   </span></span></li> <li><span>ALL is true   </span></li> <li><span>/home/l/g/tomotoboy/getopts >getopts1 -v   </span></li> <li><span>VERROSE is   </span></li> <li><span>/home/l/g/tomotoboy/getopts >getopts1 -v -a -h   </span></li> <li><span>VERROSE is   </span></li> <li><span>ALL is true   </span></li> <li><span>HELP is true  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">/home/l/g/tomotoboy/getopts >getopts1 -a ALL is true /home/l/g/tomotoboy/getopts >getopts1 -v VERROSE is /home/l/g/tomotoboy/getopts >getopts1 -v -a -h VERROSE is ALL is true HELP is true </pre> getopts涓鑸牸寮忎負錛?<br /> getopts  option_string variable <br /> 鍦ㄤ笂榪頒緥瀛愪腑浣跨敤鑴氭湰錛?<br /> while getopts ahfgv OPTION <br /> 鍙互鐪嬪嚭while寰幆鐢ㄤ簬璇誨彇鍛戒護琛岋紝option_string涓烘寚瀹氱殑5涓夐」錛? a錛? h錛? f錛? g錛? v錛?鑴氭湰涓璿ariable涓篛PTION銆傛敞鎰忚繖閲屽茍娌℃湁鐢ㄨ繛瀛楃鎸囧畾姣忎竴鍗曚釜閫夐」銆?<br /> <br /> <strong>浣跨敤getopts鎸囧畾鍙橀噺鍙栧?/strong> <br /> 鏈夋椂鏈夊繀瑕佸湪鑴氭湰涓寚瀹氬懡浠よ閫夐」鍙栧箋俫etopts涓烘鎻愪緵浜嗕竴縐嶆柟寮忥紝鍗沖湪option_string涓皢涓涓啋鍙鋒斁鍦ㄩ夐」鍚庛備緥濡傦細 <br /> getopts ahfvc: OPTION <br /> 涓婇潰涓琛岃剼鏈寚鍑猴紝閫夐」 a銆乭銆乫銆乿鍙互涓嶅姞瀹為檯鍊艱繘琛屼紶閫掞紝鑰岄夐」 c蹇呴』鍙栧箋備嬌鐢ㄩ夐」鍙栧兼椂錛屽繀欏諱嬌鐢ㄥ彉閲?OPTARG淇濆瓨璇ュ箋傚鏋滆瘯鍥句笉鍙栧間紶閫掓閫夐」錛屼細榪斿洖涓涓敊璇俊鎭傞敊璇俊鎭彁紺哄茍涓嶆槑紜紝鍥犳鍙互鐢ㄨ嚜宸辯殑鍙嶉淇℃伅灞忚斀瀹冿紝鏂規(guī)硶濡備笅錛?<br /> 灝嗗啋鍙鋒斁鍦╫ption_string寮濮嬮儴鍒嗐?<br /> <div id="oycrvpl" class="dp-highlighter"> <div id="dfbjres" class="bar"> <div id="inuakaz" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>while getopts :ahfgvc:  OPTION  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">while getopts :ahfgvc: OPTION</pre> <div id="mciikrk" class="dp-highlighter"> <div id="vxandko" class="bar"> <div id="kkhrcdn" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>#!/bin/sh   </span></span></li> <li><span>#getopts1   </span></li> <li><span>#set the vars   </span></li> <li><span>ALL=false   </span></li> <li><span>HELP=false   </span></li> <li><span>FILE=false   </span></li> <li><span>VERBROSE=false   </span></li> <li><span>COPIES=</span><span id="tgrxpgp" class="number">0</span><span> #the value for the -c option is set to zero   </span></span></li> <li><span>while getopts :ahfgvc: OPTION   </span></li> <li><span>do   </span></li> <li><span>  case $OPTION in   </span></li> <li><span>  a)ALL=true   </span></li> <li><span>    echo </span><span id="cjihlub" class="string">"ALL is $ALL"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  h)HELP=true   </span></li> <li><span>    echo </span><span id="icvfwge" class="string">"HELP is $HELP"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  f)FILE=true   </span></li> <li><span>    echo </span><span id="aykhaet" class="string">"FILE is $FILE"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  v)VERBOSE=true   </span></li> <li><span>    echo </span><span id="wznnrvr" class="string">"VERROSE is $VERROSE"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  c)COPIES=$OPTARG   </span></li> <li><span>    echo </span><span id="lizxghb" class="string">"COPIES is $COPIES"</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span>  \?) #usage stagement   </span></li> <li><span>    echo </span><span id="qktgiul" class="string">"`basename $0` -[a h f v] -[c value] file"</span><span> >&</span><span id="evbzbom" class="number">2</span><span>  </span></span></li> <li><span>    ;;   </span></li> <li><span> esac   </span></li> <li><span>done    </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">#!/bin/sh #getopts1 #set the vars ALL=false HELP=false FILE=false VERBROSE=false COPIES=0 #the value for the -c option is set to zero while getopts :ahfgvc: OPTION do case $OPTION in a)ALL=true echo "ALL is $ALL" ;; h)HELP=true echo "HELP is $HELP" ;; f)FILE=true echo "FILE is $FILE" ;; v)VERBOSE=true echo "VERROSE is $VERROSE" ;; c)COPIES=$OPTARG echo "COPIES is $COPIES" ;; \?) #usage stagement echo "`basename $0` -[a h f v] -[c value] file" >&2 ;; esac done </pre> <br /> <br /> <div id="sdqqnsr" class="dp-highlighter"> <div id="vgoxgmb" class="bar"> <div id="hpjxqce" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy/getopts >chmod </span><span id="iomveol" class="number">755</span><span> getopts2   </span></span></li> <li><span>/home/l/g/tomotoboy/getopts >getopts2 -c hello   </span></li> <li><span>COPIES is hello   </span></li> <li><span>/home/l/g/tomotoboy/getopts >getopts2 -h -c hello   </span></li> <li><span>HELP is true   </span></li> <li><span>COPIES is hello  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">/home/l/g/tomotoboy/getopts >chmod 755 getopts2 /home/l/g/tomotoboy/getopts >getopts2 -c hello COPIES is hello /home/l/g/tomotoboy/getopts >getopts2 -h -c hello HELP is true COPIES is hello</pre> <br /> <br /> <strong>璁塊棶鍙栧兼柟寮?/strong> <br /> getopts鐨勪竴縐嶅姛鑳芥槸榪愯鍚庡彴鑴氭湰銆傝繖鏍峰彲浠ヤ嬌鐢ㄦ埛鍔犲叆閫夐」錛屾寚瀹氫笉鍚岀殑紓佸甫璁懼浠ュ浠芥暟鎹備嬌鐢╣etopts瀹炵幇姝や換鍔$殑鍩烘湰妗嗘灦濡備笅錛?<br /> <div id="tkwyxjk" class="dp-highlighter"> <div id="dmnpbyc" class="bar"> <div id="qjlemnt" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>#!/bin/sh   </span></span></li> <li><span>QUITE=n   </span></li> <li><span>DEVICE=awa   </span></li> <li><span>LOGFILE=/tmp/logbackup   </span></li> <li><span>usage()   </span></li> <li><span>{   </span></li> <li><span> echo </span><span id="dgxvcux" class="string">"Usage: `basename $0` -d [device] -l [logfile] -q"</span><span>  </span></span></li> <li><span> exit </span><span id="eazupwj" class="number">1</span><span>  </span></span></li> <li><span>  </span></li> <li><span>}   </span></li> <li><span>if [ $# = </span><span id="nqdbcvl" class="number">0</span><span> ]   </span></span></li> <li><span>then    </span></li> <li><span>  usage   </span></li> <li><span>fi   </span></li> <li><span>  </span></li> <li><span>while getopts :qd:l: OPTION   </span></li> <li><span>do   </span></li> <li><span>  case $OPTION in   </span></li> <li><span>  q) QUIET=y   </span></li> <li><span>     LOGFILE=</span><span id="qpykpyc" class="string">"/tmp/backup.log"</span><span>  </span></span></li> <li><span>     ;;   </span></li> <li><span>  d) DEVICE=$OPTARG   </span></li> <li><span>     ;;   </span></li> <li><span>  l) LOGFILE=$OPTARG      </span></li> <li><span>     ;;   </span></li> <li><span>  \?)usage   </span></li> <li><span>     ;;   </span></li> <li><span>   esac   </span></li> <li><span>done   </span></li> <li><span>echo </span><span id="sjoebyo" class="string">"you chose the following options...I can now process these"</span><span>  </span></span></li> <li><span>echo </span><span id="uefmurz" class="string">"Quite = $QUIET $DEVICE $LOGFILE"</span><span>  </span></span></li> </ol> </div> </div> <img src ="http://www.tkk7.com/jzone/aggbug/304093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-11-29 12:10 <a href="http://www.tkk7.com/jzone/articles/304093.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>shell鍑芥暟http://www.tkk7.com/jzone/articles/304092.htmlGavin.leeGavin.leeSun, 29 Nov 2009 04:09:00 GMThttp://www.tkk7.com/jzone/articles/304092.html 
鍑芥暟鐢變袱閮ㄥ垎緇勬垚錛?
  • 鍑芥暟鏍囬銆?
  • 鍑芥暟浣撱?

鏍囬鏄嚱鏁板悕銆傚嚱鏁頒綋鏄嚱鏁板唴鐨勫懡浠ら泦鍚堛傛爣棰樺悕搴旇鍞竴錛涘鏋滀笉鏄紝灝嗕細娣鋒穯緇擄紝鍥犱負鑴氭湰鍦ㄦ煡鐪嬭皟鐢ㄨ剼鏈墠灝嗛鍏堟悳绱㈠嚱鏁拌皟鐢ㄧ浉搴旂殑 s h e l l銆?
瀹氫箟鍑芥暟鐨勬牸寮忎負錛?
Shell浠g爜
  1. 鍑芥暟鍚嶏紙錛?  
  2. {    
  3. 鍛戒護1  
  4. . . .   
  5. }   
  6. 鎴栬?  
  7. function 鍑芥暟鍚嶏紙錛?  
  8. {   ...   
  9. }  


涓よ呮柟寮忛兘鍙銆傚鏋滄効鎰忥紝鍙湪鍑芥暟鍚嶅墠鍔犱笂鍏抽敭瀛梖unction錛岃繖鍙栧喅浜庝嬌鐢ㄨ呫?

鍒涘緩鍑芥暟鏂囦歡
涓嬮潰鍒涘緩鍖呭鍑芥暟鐨勫嚱鏁版枃浠跺茍灝嗕箣杞藉叆shell錛岃繘琛屾祴璇曪紝鍐嶅仛鏀瑰姩錛屼箣鍚庡啀閲嶆柊杞藉叆銆?
鍑芥暟鏂囦歡鍚嶄負functions.main錛屽唴瀹瑰涓?
Shell浠g爜
  1. #!/bin/sh   
  2. #functions.main   
  3. #   
  4. #findit: this is front end for the basic find command   
  5. findit() {   
  6. #findit   
  7. if [ $# -lt 1 ]; then   
  8. echo "usage : findit file"  
  9. return 1;   
  10. fi   
  11. find . -name $1 -print   
  12. }  
瀹氫綅鏂囦歡
瀹氫綅鏂囦歡鏍煎紡涓猴細
. /pahname/filename
鐜板湪鏂囦歡宸茬粡鍒涘緩濂戒簡錛岃灝嗕箣杞藉叆shell錛岃瘯閿叆錛?
$. functions.main
濡傛灉榪斿洖淇℃伅file not found錛屽啀璇曪細
$. /functions.main
姝ゅ嵆<鐐?gt; <絀烘牸> <鏂滅嚎> <鏂囦歡鍚?gt;錛岀幇鍦ㄦ枃浠跺簲璇ュ凡杞藉叆shell銆傚鏋滀粛鏈夐敊璇紝鍒欏簲璇ヤ粩緇嗘鏌ユ槸鍚﹂敭鍏ヤ簡瀹屾暣璺緞鍚?

媯鏌ヨ澆鍏ュ嚱鏁?
浣跨敤set鍛戒護紜繚鍑芥暟宸茶澆鍏ャ俿et鍛戒護灝嗗湪shell涓樉紺烘墍鏈夌殑杞藉叆鍑芥暟銆?
Shell浠g爜
  1. /home/l/g/tomotoboy/function >. function.main   
  2. /home/l/g/tomotoboy/function >set   
  3. ……   
  4. _=function.main   
  5. findit ()   
  6. {   
  7.     if [ $# -lt 1 ]; then   
  8.         echo "usage : findit file";   
  9.         return 1;   
  10.     fi;   
  11.     find . -name $1 -print   
  12. }  
鎵цshell鍑芥暟
瑕佹墽琛屽嚱鏁幫紝綆鍗曞湴閿叆鍑芥暟鍚嶅嵆鍙傝繖閲屾槸甯︽湁涓涓弬鏁扮殑 findit鍑芥暟錛屽弬鏁版槸鏌愪釜鏂囦歡
Shell浠g爜
  1. /home/l/g/tomotoboy/function >cd .   
  2. /home/l/g/tomotoboy/function >cd ..   
  3. /home/l/g/tomotoboy >findit sed.txt   
  4. ./testdirec/sed.txt   
  5. ./sed.txt  


鍒犻櫎shell鍑芥暟
鐜板湪瀵瑰嚱鏁板仛涓浜涙敼鍔ㄣ傞鍏堝垹闄ゅ嚱鏁幫紝浣垮叾瀵箂hell涓嶅彲鍒╃敤銆備嬌鐢╱nset鍛戒護瀹屾垚姝ゅ姛鑳姐傚垹闄ゅ嚱鏁版椂unset鍛戒護鏍煎紡涓猴細
unset  function_name
$unset findit
濡傛灉鐜板湪閿叆set鍛戒護錛屽嚱鏁板皢涓嶅啀鏄劇ず銆?
Shell浠g爜
  1. /home/l/g/tomotoboy >unset findit   
  2. /home/l/g/tomotoboy >set   
  3. ……   
  4. _=findit   
  5. /home/l/g/tomotoboy >findit sed.txt   
  6. -bash: findit: command not found  


鍐嶆瀹氫綅鍑芥暟
Shell浠g爜
  1. /home/l/g/tomotoboy >. function/function.main   
  2. /home/l/g/tomotoboy >findit sed.txt   
  3. ./testdirec/sed.txt   
  4. ./sed.txt  

濡傛灉鍑芥暟灝嗕粠嫻嬭瘯緇撴灉涓弽棣堣緭鍑猴紝閭d箞浣跨敤鏇挎崲鍛戒護鍙繚瀛樼粨鏋溿傚嚱鏁拌皟鐢ㄧ殑鏇挎崲鏍煎紡涓猴細
variable_name = variable_name
鍑芥暟function_name杈撳嚭琚緗埌鍙橀噺variable_name涓?
Shell浠g爜
  1. char_name(){   
  2. # char_name   
  3. # to call: char_name string   
  4. # assign the argument across to new variable   
  5. _LETTER_ONLY=$1  
  6. # user awk to test for character only!   
  7. _LETTER_ONLY=`echo $1|awk '{if ($0~/[^a-z A-Z]/) print 1}'`   
  8. if [ "$_LETTER_ONLY" != "" ]   
  9. then   
  10.     # oops  errors   
  11.     return 1  
  12. else   
  13.     # constains only chars   
  14.     return 0  
  15. fi   
  16. }  

Shell浠g爜
  1. if char_name $F_NAME; then   
  2.  echo "OK"  
  3. else   
  4.   echo "ERROR"  
  5. fi  
嫻嬭瘯涓涓?
Shell浠g爜
  1. /home/l/g/tomotoboy/function >char_name hello   
  2. /home/l/g/tomotoboy/function >echo $?   
  3. 0  
娉ㄦ剰^絎﹀彿鐨勪嬌鐢紝褰撶洿鎺ョ敤鍦ㄧ涓涓嫭鍙烽噷錛屾剰鎸囧惁瀹氭垨涓嶅尮閰嶆嫭鍙烽噷鍐呭銆俒^a-z A-Z] 鍖歸厤浠諱竴闈炲瓧姣嶅瀷瀛楃錛岃孾^0-9]鍖歸厤浠諱竴闈炴暟瀛楀瀷瀛楃銆?


Gavin.lee 2009-11-29 12:09 鍙戣〃璇勮
]]>
鍚庡彴鎵ц鍛戒護鈥斺斿畧鎶よ繘紼嬪垱寤?/title><link>http://www.tkk7.com/jzone/articles/304091.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sun, 29 Nov 2009 04:08:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/304091.html</guid><description><![CDATA[<h3 class="" title="闅忕瑪"><a ></a> </h3> <div id="wlvtfkw" class="blog_content">褰撲綘鍦ㄧ粓绔垨鎺у埗鍙板伐浣滄椂錛屽彲鑳戒笉甯屾湜鐢變簬榪愯涓涓綔涓氳屽崰浣忎簡灞忓箷錛屽洜涓哄彲鑳借繕鏈夋洿閲嶈鐨勪簨鎯呰鍋氾紝姣斿闃呰鐢?shù)瀛愰偖錃g銆傚浜庡瘑闆嗚闂鐩樼殑榪涚▼錛屼綘鍙兘甯屾湜瀹冭兘澶熷湪姣忓ぉ鐨勯潪璐熻嵎楂樺嘲鏃墮棿孌佃繍琛屻備負浜嗕嬌榪欎簺榪涚▼鑳藉鍦ㄥ悗鍙拌繍琛岋紝涔熷氨鏄涓嶅湪緇堢灞忓箷涓婅繍琛岋紝鏈夊嚑縐嶉夋嫨鏂規(guī)硶鍙緵浣跨敤錛?<br /> <ul> <li>璁劇疆crontab鏂囦歡錛屽茍鐢ㄥ畠鏉ユ彁浜や綔涓氥? <li>浣跨敤at鍛戒護鏉ユ彁浜や綔涓氥? <li>鍦ㄥ悗鍙版彁浜や綔涓氥? <li>浣跨敤nohup鍛戒護鎻愪氦浣滀笟銆?</li> </ul> <br /> 鍚嶈瘝瑙i噴錛?<br /> <ul> <li>cron緋葷粺璋冨害榪涚▼銆傚彲浠ヤ嬌鐢ㄥ畠鍦ㄦ瘡澶╃殑闈為珮宄拌礋鑽鋒椂闂存榪愯浣滀笟錛屾垨鍦ㄤ竴鍛ㄦ垨涓鏈堜腑鐨勪笉鍚屾椂孌佃繍琛屻? <li>at鍛戒護銆備嬌鐢ㄥ畠鍦ㄤ竴涓壒瀹氱殑鏃墮棿榪愯涓浜涚壒孌婄殑浣滀笟錛屾垨鍦ㄦ櫄涓浜涚殑闈炶礋鑽烽珮宄版椂闂存鎴栭珮宄拌礋鑽鋒椂闂存榪愯銆? <li>& 浣跨敤瀹冨湪鍚庡彴榪愯涓涓崰鐢ㄦ椂闂翠笉闀跨殑榪涚▼銆? <li>Nohup 浣跨敤瀹冨湪鍚庡彴榪愯涓涓懡浠わ紝鍗充嬌鍦ㄧ敤鎴烽鍑烘椂涔熶笉鍙楀獎鍝嶃?</li> </ul> <br /> 涓涓婦涓涓緥瀛?<br /> <strong>crontab</strong> <br /> 鐢╟rontab鎻愪氦涓涓換鍔″湪姣忓ぉ鏅氫笂7鐐瑰zhangwanzhi璇磇 love you <br /> <div id="ctjzdim" class="dp-highlighter"> <div id="edxrkhf" class="bar"> <div id="glslmrc" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy >touch tomotoboycron   </span></span></li> <li><span>/home/l/g/tomotoboy >cat > tomotoboycron   </span></li> <li><span id="hdwffox" class="number">0</span><span> </span><span id="mfrdibb" class="number">19</span><span> * * * echo </span><span id="isipujk" class="string">"I love zhangwanzhi"</span><span>  </span></span></li> <li><span>/home/l/g/tomotoboy >crontab tomotoboycron   </span></li> <li><span>cron may not be running - call your system administrator   </span></li> <li><span>/home/l/g/tomotoboy >crontab -l   </span></li> <li><span id="ruugdpl" class="number">0</span><span> </span><span id="pvkwxbm" class="number">19</span><span> * * * echo </span><span id="malpjzp" class="string">"I love zhangwanzhi"</span><span>  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">/home/l/g/tomotoboy >touch tomotoboycron /home/l/g/tomotoboy >cat > tomotoboycron 0 19 * * * echo "I love zhangwanzhi" /home/l/g/tomotoboy >crontab tomotoboycron cron may not be running - call your system administrator /home/l/g/tomotoboy >crontab -l 0 19 * * * echo "I love zhangwanzhi"</pre> <br /> <br /> 鍒犻櫎crontab 鏂囦歡 <br /> <div id="hnggdhl" class="dp-highlighter"> <div id="pxywtyc" class="bar"> <div id="hosaney" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy >crontab -r   </span></span></li> <li><span>cron may not be running - call your system administrator   </span></li> <li><span>/home/l/g/tomotoboy >crontab -l   </span></li> <li><span>crontab: can't open your crontab file.  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">/home/l/g/tomotoboy >crontab -r cron may not be running - call your system administrator /home/l/g/tomotoboy >crontab -l crontab: can't open your crontab file.</pre> <br /> <br /> 鎭㈠涓㈠け鐨刢rontab鏂囦歡 <br /> 濡傛灉涓嶅皬蹇冭鍒犱簡crontab鏂囦歡錛屽亣璁句綘鍦ㄨ嚜宸辯殑$HOME鐩綍涓嬭繕鏈変竴涓浠斤紝閭d箞鍙互灝嗗叾鎷瘋礉鍒?var/spool/cron/<username >錛屽叾涓?lt;username>鏄敤鎴峰悕銆傚鏋滅敱浜庢潈闄愰棶棰樻棤娉曞畬鎴愭嫹璐濓紝鍙互鐢細 <br /> <div id="xdiuzxc" class="dp-highlighter"> <div id="uarhxbu" class="bar"> <div id="zmsiujk" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>$ crontab <filename>  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">$ crontab <filename></pre> <br /> 鐜板湪鎴戜滑鏉ユ仮澶峵omotoboycron <br /> <div id="mlpbnrk" class="dp-highlighter"> <div id="bwrqray" class="bar"> <div id="guklijz" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy >crontab tomotoboycron   </span></span></li> <li><span>cron may not be running - call your system administrator   </span></li> <li><span>/home/l/g/tomotoboy >crontab -l   </span></li> <li><span id="vbnwjkh" class="number">0</span><span> </span><span id="ayhaiik" class="number">19</span><span> * * * echo </span><span id="mdwibmc" class="string">"I love zhangwanzhi"</span><span>  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">/home/l/g/tomotoboy >crontab tomotoboycron cron may not be running - call your system administrator /home/l/g/tomotoboy >crontab -l 0 19 * * * echo "I love zhangwanzhi"</pre> <br /> <strong>at</strong> <br /> 鍦ㄥ懡浠ゆ彁浜や竴鍒嗛挓鍚庢墽琛?<br /> <div id="jxolyve" class="dp-highlighter"> <div id="xgzkirs" class="bar"> <div id="lxfxnsf" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy >ls -l|grep </span><span id="iaexkwq" class="string">"tomotoboy"</span><span>|at now +</span><span id="vxndafk" class="number">1</span><span> minute   </span></span></li> <li><span>cron may not be running - call your system administrator   </span></li> <li><span>commands will be executed using /bin/bash   </span></li> <li><span>job </span><span id="drppall" class="number">1249815115</span><span>.a at Sun Aug  </span><span id="mgpyvlm" class="number">9</span><span> </span><span id="2uek2au" class="number">18</span><span>:</span><span id="gy4w4go" class="number">51</span><span>:</span><span id="o0wwuyi" class="number">55</span><span> </span><span id="8owciqq" class="number">2009</span><span>  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">/home/l/g/tomotoboy >ls -l|grep "tomotoboy"|at now +1 minute cron may not be running - call your system administrator commands will be executed using /bin/bash job 1249815115.a at Sun Aug 9 18:51:55 2009</pre> <br /> <br /> 鍒楀嚭宸茬粡鎻愪氦鐨刟t浠誨姟錛?<br /> <div id="2wa0agg" class="dp-highlighter"> <div id="s82euou" class="bar"> <div id="esu8cco" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy >at -l   </span></span></li> <li><span id="aky06s0" class="number">1249815115</span><span>.a    Sun Aug  </span><span id="iqso8m2" class="number">9</span><span> </span><span id="ic4cyec" class="number">18</span><span>:</span><span id="ycqsgoo" class="number">51</span><span>:</span><span id="0c2ig68" class="number">55</span><span> </span><span id="2yg8ow2" class="number">2009</span><span>  </span></span></li> <li><span id="48sigs4" class="number">1249813233</span><span>.a    Sun Aug  </span><span id="yguiosy" class="number">9</span><span> </span><span id="26ks0wk" class="number">18</span><span>:</span><span id="wsqio6w" class="number">20</span><span>:</span><span id="uomessi" class="number">33</span><span> </span><span id="y40yua4" class="number">2009</span><span>  </span></span></li> <li><span id="ysacmgq" class="number">1249813261</span><span>.a    Sun Aug  </span><span id="m0oacym" class="number">9</span><span> </span><span id="wo0ywke" class="number">18</span><span>:</span><span id="ueyw00a" class="number">21</span><span>:</span><span id="ww0koky" class="number">01</span><span> </span><span id="ouuwik2" class="number">2009</span><span>  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">/home/l/g/tomotoboy >at -l 1249815115.a Sun Aug 9 18:51:55 2009 1249813233.a Sun Aug 9 18:20:33 2009 1249813261.a Sun Aug 9 18:21:01 2009</pre> <br /> <br /> 浣跨敤atrm鍒犻櫎涓涓換鍔★細 <br /> <div id="eousk6k" class="dp-highlighter"> <div id="ee4uyms" class="bar"> <div id="oaeyose" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy >atrm </span><span id="kisok4k" class="number">1249815115</span><span>.a   </span></span></li> <li><span>cron may not be running - call your system administrator   </span></li> <li><span id="acayayc" class="number">1249815115</span><span>.a: removed   </span></span></li> <li><span>/home/l/g/tomotoboy >at -l   </span></li> <li><span id="4co0e2s" class="number">1249813233</span><span>.a    Sun Aug  </span><span id="acse4c0" class="number">9</span><span> </span><span id="w4oiiqo" class="number">18</span><span>:</span><span id="wkcuiei" class="number">20</span><span>:</span><span id="ggq2482" class="number">33</span><span> </span><span id="oqyksai" class="number">2009</span><span>  </span></span></li> <li><span id="4eiy8sc" class="number">1249813261</span><span>.a    Sun Aug  </span><span id="ksqauu4" class="number">9</span><span> </span><span id="osuowa4" class="number">18</span><span>:</span><span id="owyywsi" class="number">21</span><span>:</span><span id="ukem4a6" class="number">01</span><span> </span><span id="2208ies" class="number">2009</span><span>  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">/home/l/g/tomotoboy >atrm 1249815115.a cron may not be running - call your system administrator 1249815115.a: removed /home/l/g/tomotoboy >at -l 1249813233.a Sun Aug 9 18:20:33 2009 1249813261.a Sun Aug 9 18:21:01 2009</pre> <br /> <br /> <strong>&鍜宯ohup</strong> <br /> 鍦ㄥ悗鍙拌繍琛宔cho "I love you zhangwanzhi" 錛岀敤鎴烽鍑烘椂涓嶇粓姝細 <br /> <div id="swsauoo" class="dp-highlighter"> <div id="woq2uu2" class="bar"> <div id="aw6um2i" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>/home/l/g/tomotoboy >nohup echo </span><span id="2ymskmo" class="string">"I love you zhangwanzhi"</span><span> &   </span></span></li> <li><span>[</span><span id="2ggkiim" class="number">1</span><span>] </span><span id="wo4g2ea" class="number">20784</span><span>  </span></span></li> <li><span>/home/l/g/tomotoboy >Sending output to nohup.out   </span></li> <li><span>/home/l/g/tomotoboy >cat nohup.out   </span></li> <li><span>Ilove you zhangwanzhi  </span></li> </ol> </div> </div> <img src ="http://www.tkk7.com/jzone/aggbug/304091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-11-29 12:08 <a href="http://www.tkk7.com/jzone/articles/304091.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎺у埗嫻佺粨鏋勨斺攗ntil銆亀hile銆乥reak銆乧ontinuehttp://www.tkk7.com/jzone/articles/304090.htmlGavin.leeGavin.leeSun, 29 Nov 2009 04:07:00 GMThttp://www.tkk7.com/jzone/articles/304090.html 
until寰幆
鏉′歡涓?涓虹湡錛?涓哄亣
until寰幆鎵ц涓緋誨垪鍛戒護鐩磋嚦鏉′歡涓虹湡鏃跺仠姝€?until寰幆涓巜hile寰幆鍦ㄥ鐞嗘柟寮忎笂鍒氬ソ鐩稿弽銆備竴鑸瑆hile寰幆浼樹簬until寰幆錛屼絾鍦ㄦ煇浜涙椂鍊欌斾篃鍙槸鏋佸皯鏁版儏鍐典笅錛寀ntil寰幆鏇村姞鏈夌敤銆?
until寰幆鏍煎紡涓猴細
Shell浠g爜
  1. until  鏉′歡   
  2. do   
  3.     鍛戒護1  
  4.     . . .   
  5. done  
鏉′歡鍙負浠繪剰嫻嬭瘯鏉′歡錛屾祴璇曞彂鐢熷湪寰幆鏈熬錛屽洜姝ゅ驚鐜嚦灝戞墽琛屼竴嬈♀旇娉ㄦ剰榪欎竴鐐?
鐩戣鏂囦歡
涓嬮潰渚嬪瓙涓紝until寰幆涓嶆柇鎸傝搗鍋氱潯鐪狅紝鐩磋嚦鏂囦歡process.LCK 琚垹闄ゃ傛枃浠跺垹闄ゅ悗錛岃剼鏈繘鍏ユ甯稿鐞嗚繃紼嬨?
Shell浠g爜
  1. /home/l/g/tomotoboy/until >ls   
  2. until_lck  untilwho   
  3. /home/l/g/tomotoboy/until >[ -f untilwho ]   
  4. /home/l/g/tomotoboy/until >echo $?   
  5. 0  
  6. /home/l/g/tomotoboy/until >[ ! -f untilwho ]   
  7. /home/l/g/tomotoboy/until >echo $?   
  8. 1  
  9. /home/l/g/tomotoboy/until >rm untilwho   
  10. /home/l/g/tomotoboy/until >[ ! -f untilwho ]   
  11. /home/l/g/tomotoboy/until >echo $?   
  12. 0  
  13.   
  14. #!/bin/sh   
  15. #until_lck   
  16. touch `pwd`/process.LCK   
  17. LOCK_FILE=`pwd`/process.LCK   
  18. until [ ! -f $LOCK_FILE ]   
  19. do   
  20.      sleep 1  
  21. done   
  22. echo "file deleted"  

鏌ユ壘tomotoboy鏈夋病鏈夌櫥褰曪紝鐧婚檰鍚庣粰鑷繁鍙戜釜閭歡
Shell浠g爜
  1. /home/l/g/tomotoboy/until >cat untilwho   
  2. #!/bin/sh   
  3. #until_who   
  4. IS_TOMOTOBOY=`who | grep tomotoboy`   
  5. until [  "$IS_TOMOTOBOY" ]   
  6. do   
  7.     sleep 5  
  8. done   
  9. echo "Wtch it. tomotoboy in " | mail tomotoboy  

while寰幆
while寰幆鐢ㄤ簬涓嶆柇鎵ц涓緋誨垪鍛戒護錛屼篃鐢ㄤ簬浠庤緭鍏ユ枃浠朵腑璇誨彇鏁版嵁錛屽叾鏍煎紡涓猴細
Shell浠g爜
  1. while  鍛戒護   
  2. do   
  3. 鍛戒護1  
  4. 鍛戒護2  
  5. . . .   
  6. done  
铏界劧閫氬父鍙嬌鐢ㄤ竴涓懡浠わ紝浣嗗湪 while鍜宒o涔嬮棿鍙互鏀懼嚑涓懡浠ゃ傚懡浠ら氬父鐢ㄤ綔嫻嬭瘯鏉′歡銆傚彧鏈夊綋鍛戒護鐨勯鍑虹姸鎬佷負 0鏃訛紝do鍜宒one涔嬮棿鍛戒護鎵嶈鎵ц錛屽鏋滈鍑虹姸鎬佷笉鏄?0錛屽垯寰幆緇堟銆?
Shell浠g爜
  1. #!/bin/sh   
  2. #whilecount   
  3. COUNT=0  
  4. while [ $COUNT -lt 5 ]   
  5. do   
  6.   echo "$COUNT"  
  7.   COUNT=`expr $COUNT + 1`   
  8. done   
  9.   
  10. /home/l/g/tomotoboy >whilecount   
  11. 0  
  12. 1  
  13. 2  
  14. 3  
  15. 4  

璇繪枃浠?
Shell浠g爜
  1. #!/bin/sh   
  2. #whileread   
  3. while read LINE   
  4. do   
  5.   echo "$LINE"  
  6. done < sed.txt  



break
break鍛戒護鍏佽璺沖嚭寰幆銆俠reak閫氬父鍦ㄨ繘琛屼竴浜涘鐞嗗悗閫鍑哄驚鐜垨 case璇彞銆傚鏋滄槸鍦ㄤ竴涓祵鍏ュ驚鐜噷錛屽彲浠ユ寚瀹氳煩鍑虹殑寰幆涓暟銆備緥濡傚鏋滃湪涓ゅ眰寰幆鍐咃紝鐢?break鍒氬ソ璺沖嚭鏁翠釜寰幆銆?
璺沖嚭case璇彞
涓嬮潰鐨勪緥瀛愪腑錛岃剼鏈繘鍏ユ寰幆鐩磋嚦鐢ㄦ埛杈撳叆鏁板瓧澶т簬 5銆傝璺沖嚭榪欎釜寰幆錛岃繑鍥炲埌shell鎻愮ず絎︿笅錛宐reak浣跨敤鑴氭湰濡備笅錛?
Shell浠g爜
  1. #!/bin/sh   
  2. #breakout   
  3. #while : means loop forever   
  4. while :   
  5. do   
  6.    echo -n "Enter any number [1..5]: "  
  7.    read ANS   
  8.    case $ANS in   
  9.    1|2|3|4|5) echo " great you entered a number between 1 and 5"  
  10.    ;;   
  11.    *)echo "Wrong number..bye"  
  12.    break   
  13.   ;;   
  14.  esac   
  15. done  

Shell浠g爜
  1. /home/l/g/tomotoboy >breakout   
  2. -n Enter any number [1..5]:   
  3. 3  
  4.  great you entered a number between 1 and 5  
  5. -n Enter any number [1..5]:   
  6. 6  
  7. Wrong number..bye  

continue
continue鍛戒護綾諱技浜巄reak鍛戒護錛屽彧鏈変竴鐐歸噸瑕佸樊鍒紝瀹冧笉浼氳煩鍑哄驚鐜紝鍙槸璺寵繃榪欎釜寰幆姝ャ?


Gavin.lee 2009-11-29 12:07 鍙戣〃璇勮
]]>
鎺у埗嫻佺粨鏋勨斺攆orhttp://www.tkk7.com/jzone/articles/304089.htmlGavin.leeGavin.leeSun, 29 Nov 2009 04:06:00 GMThttp://www.tkk7.com/jzone/articles/304089.html 
for寰幆
for 鍙橀噺鍚?in 鍒楄〃
do
       鍛戒護 1
       鍛戒護 2
done
褰撳彉閲忓煎湪鍒楄〃閲岋紝for寰幆鍗蟲墽琛屼竴嬈℃墍鏈夊懡浠わ紝浣跨敤鍙橀噺鍚嶈闂垪琛ㄤ腑鍙栧箋傚懡浠ゅ彲涓轟換浣曟湁鏁堢殑shell鍛戒護鍜岃鍙ャ傚彉閲忓悕涓轟換浣曞崟璇嶃俰n鍒楄〃鐢ㄦ硶鏄彲閫夌殑錛屽鏋滀笉鐢ㄥ畠錛?for寰幆浣跨敤鍛戒護琛岀殑浣嶇疆鍙傛暟銆俰n鍒楄〃鍙互鍖呭惈鏇挎崲銆佸瓧絎︿覆鍜屾枃浠跺悕錛屼笅闈㈢湅涓浜涗緥瀛愩?
Shell浠g爜
  1. /home/l/g/tomotoboy/for >cat fortest   
  2. #!/bin/sh   
  3. #for_i   
  4. for loop in 1 2 3 4 5 6  
  5. do   
  6.     echo $loop   
  7. done   
  8.   
  9. #forlist   
  10. for loop in "orange red blue grey"  
  11. do   
  12.    echo $loop   
  13. done   
  14.   
  15. #forls   
  16. for loop in `ls`   
  17. do   
  18.      echo $loop   
  19. done   
  20.   
  21.   
  22. #forparam   
  23. for params   
  24. do   
  25.      echo "you supplied $params as command line option"  
  26.      echo $params   
  27. done   
  28.   
  29. for params in "$@"  
  30. do   
  31.      echo "you supplied $params as command line option"  
  32.      echo $params   
  33. done   
  34.   
  35. #forcommand   
  36. for loop   
  37. do   
  38.       find `pwd` -name $loop -print   
  39. done   
  40.   
  41.   
  42. /home/l/g/tomotoboy/for >fortest fortest   
  43. 1  
  44. 2  
  45. 3  
  46. 4  
  47. 5  
  48. 6  
  49. orange red blue grey   
  50. fortest   
  51. you supplied fortest as command line option   
  52. fortest   
  53. you supplied fortest as command line option   
  54. fortest  


浣跨敤for寰幆榪炴帴鏈嶅姟鍣?
鍥犱負for寰幆鍙互澶勭悊鍒楄〃涓殑鍙栧鹼紝鐜拌鍙橀噺涓虹綉緇滄湇鍔″櫒鍚嶇О錛屽茍浣跨敤for寰幆榪炴帴姣忎竴鏈嶅姟鍣ㄣ?
Shell浠g爜
  1. #!/bin/sh   
  2. #forping   
  3. HOSTS="sina.com cqu.edu.cn baidu.com"  
  4. for loop in $HOSTS   
  5. do   
  6.      ping -c 2 $loop   
  7. done  
澶氭枃浠惰漿鎹?
鍖歸厤鎵鏈変互.sed緇撳熬鏂囦歡騫跺皢鍏惰漿鎹負澶у啓銆傝繖閲屼嬌鐢ㄤ簡 l s鍜宑at鍛戒護銆俵 s鐢ㄤ簬鏌ヨ鍑虹浉鍏蟲枃浠訛紝cat鐢ㄤ簬灝嗕箣綆¢亾杈撳嚭鑷硉rr鍛戒護銆傜洰鏍囨枃浠舵墿灞曞悕涓?UC錛屾敞鎰忓湪for寰幆涓嬌鐢╨ s鍛戒護鏃跺弽寮曞彿鐨勭敤娉曘?
Shell浠g爜
  1. #!/bin/sh   
  2. #forstr   
  3. for files in `ls *.sed`   
  4. do   
  5.     cat $files |tr "[a-z]"  "[A-Z]" >$files.UC   
  6. done   
  7.   
  8. /home/l/g/tomotoboy >cat change.sed   
  9. #!/bin/sed -f   
  10. #change.sed   
  11. /tomotoboy/ c\   
  12. I love China,Ilove Wanzhi.   
  13. /home/l/g/tomotoboy >ls *.UC   
  14. append.sed.UC  change.sed.UC   
  15. /home/l/g/tomotoboy >cat change.sed.UC   
  16. #!/BIN/SED -F   
  17. #CHANGE.SED   
  18. /TOMOTOBOY/ C\   
  19. I LOVE CHINA,ILOVE WANZHI.  


澶歴ed鍒犻櫎鎿嶄綔
涓嬮潰鐨勪緥瀛愪腑錛宻ed鐢ㄤ簬鍒犻櫎鎵鏈夌┖鏂囦歡錛屽茍灝嗚緭鍑哄鑷充互 . HOLD.涓烘墿灞曞悕鐨勬柊鏂囦歡錛宮v灝嗚繖浜涙枃浠剁Щ鑷沖垵濮嬫枃浠朵腑銆?
Shell浠g爜
  1. #!/bin/sh   
  2. #forsed   
  3. for files in `ls *.sed`   
  4. do   
  5.    sed -e "/^$/d" $files > $files.HOLD   
  6.    mv $files.HOLD $files   
  7. done  


寰幆璁℃暟
鍓嶉潰璁ㄨexpr鏃舵寚鍑猴紝寰幆鏃跺鏋滆鍔犲叆璁℃暟錛屼嬌鐢ㄦ鍛戒護銆備笅闈嬌鐢?l s鍦╢or寰幆涓垪鍑烘枃浠跺強鍏舵暟鐩?
Shell浠g爜
  1. /home/l/g/tomotoboy >cat forcount   
  2. #!/bin/sh   
  3. #forcount   
  4. count=0  
  5. for files in *   
  6. do   
  7.   count=`expr $count + 1`   
  8. done   
  9. echo "There are $count files in `pwd` we need to process"  



Gavin.lee 2009-11-29 12:06 鍙戣〃璇勮
]]>
鎺у埗嫻佺粨鏋勨斺攊f then elsehttp://www.tkk7.com/jzone/articles/304087.htmlGavin.leeGavin.leeSun, 29 Nov 2009 04:05:00 GMThttp://www.tkk7.com/jzone/articles/304087.html 
if then else璇彞
Shell浠g爜
  1. If  鏉′歡1    //濡傛灉鏉′歡1涓虹湡   
  2. Then         //閭d箞   
  3. 鍛戒護1       //鎵ц鍛戒護1  
  4. elif  鏉′歡2    //濡傛灉鏉′歡1涓嶆垚绔?  
  5. then           //閭d箞   
  6. 鍛戒護2        //鎵ц鍛戒護2  
  7. else           //濡傛灉鏉′歡1錛?/span>2鍧囦笉鎴愮珛   
  8. 鍛戒護3       //閭d箞鎵ц鍛戒護3  
  9. fi             //瀹屾垚  



綆鍗曠殑if璇彞
鏈鏅氱殑if璇彞鏄細
if鏉′歡
then  鍛戒護
if
浣跨敤if璇彞鏃訛紝蹇呴』灝唗hen閮ㄥ垎鏀懼湪鏂拌錛屽惁鍒欎細浜х敓閿欒銆傚鏋滆涓嶅垎琛岋紝蹇呴』浣跨敤鍛戒護鍒嗛殧絎︺傛湰

涔﹀叾浣欓儴鍒嗗皢閲囧彇榪欑褰㈠紡銆傜幇鍦ㄧ畝鍗?if璇彞鍙樹負錛?
if  鏉′歡錛泃hen
鍛戒護
if

Shell浠g爜
  1. /home/l/g/tomotoboy >cat iftest   
  2. #!/bin/sh   
  3. #iftest   
  4. #this is a comment line,all comment lines start with a#   
  5. if [ "12" -lt "14" ]   
  6. then   
  7.  #yes 12 is less than 14  
  8.  echo  "Yes, 12 is less than 14"  
  9. fi   
  10.   
  11. /home/l/g/tomotoboy >chmod u+x iftest   
  12. /home/l/g/tomotoboy > ./iftest   
  13. Yes, 12 is less than 14  
鍙橀噺鍊兼祴璇?
涓嶅繀鎷樻償浜庡彉閲忔垨鏁板兼祴璇曪紝涔熷彲浠ユ祴鐭ョ郴緇熷懡浠ゆ槸鍚︽垚鍔熻繑鍥炪傚 grep浣跨敤if璇彞鎵懼嚭grep鏄惁鎴愬姛

榪斿洖淇℃伅銆備笅闈㈢殑渚嬪瓙涓?grep鐢ㄤ簬鏌ョ湅tomotoboy鏄惁鍦ㄦ暟鎹枃浠秙ed.txt涓紝娉ㄦ剰'tomotoboy'鐢ㄤ簬綺?

紜尮閰嶃?
Shell浠g爜
  1. /home/l/g/tomotoboy >cat grepif   
  2. #!/bin/sh   
  3. #grep if   
  4. if grep 'tomotoboy' sed.txt >/dev/null 2>&1  
  5. then   
  6.  echo "tomotoboy is  in the file"  
  7. else   
  8.  echo "tomotoboy is not in the file"  
  9. fi   
  10.   
  11. /home/l/g/tomotoboy >./grepif   
  12. tomotoboy is  in the file  

鐢ㄥ彉閲忔祴璇昰rep杈撳嚭
姝e儚鍓嶉潰鐪嬪埌鐨勶紝鍙互鐢╣rep浣滃瓧絎︿覆鎿嶄綔銆備笅闈㈢殑鑴氭湰涓紝鐢ㄦ埛杈撳叆涓涓悕瀛楀垪琛紝grep鍦ㄥ彉閲忎腑鏌ユ壘錛岃姹傚叾鏌ユ壘鎸囧畾瀛楃涓?

Shell浠g爜
  1. /home/l/g/tomotoboy >cat grepstr   
  2. #!/bin/sh   
  3. #grepstr   
  4. echo -n "Enter a piece of text file:"  
  5. read TEXT   
  6. echo -n "Enter a string to query: "  
  7. read QUERY   
  8. if grep $QUERY $TEXT >/dev/null 2>&1  
  9. then   
  10.    echo "$QUERY is in $TEXT"  
  11.    #could do some processing here...   
  12. else   
  13.    echo "$QUERY is not in  $TEXT"  
  14. fi   
  15.   
  16. /home/l/g/tomotoboy >./grepstr   
  17. -n Enter a piece of text file:   
  18. sed.txt   
  19. -n Enter a string to query:   
  20. tomotoboy   
  21. tomotoboy is in sed.txt  

鏂囦歡鎷瘋礉杈撳嚭媯鏌?
涓嬮潰嫻嬭瘯鏂囦歡鎷瘋礉鏄惁姝e父錛屽鏋?cp鍛戒護騫舵病鏈夋嫹璐濇枃浠秏yfile鍒癿yfile.bak錛屽垯鎵撳嵃閿欒淇℃伅銆傛敞鎰忛敊璇俊鎭腑` basename $0`鎵撳嵃鑴氭湰鍚嶃傚鏋滆剼鏈敊璇鍑猴紝涓涓ソ涔?fàn)鎯槸鏄窘C鴻剼鏈悕騫跺皢涔嬪畾鍚戝埌鏍囧噯閿欒涓傜敤鎴峰簲璇ョ煡閬撲駭鐢熼敊璇殑鑴氭湰鍚嶃?
Shell浠g爜
  1. /home/l/g/tomotoboy >chmod u+x ifcp   
  2. /home/l/g/tomotoboy >ifcp   
  3. cp: cannot access myfile   
  4. ifcp: error could not copy the file   
  5. /home/l/g/tomotoboy >cat ifcp   
  6. #!/bin/sh   
  7. #ifcp   
  8. if cp myfile myfile.bak; then   
  9.  echo "good copy"  
  10. else   
  11.  echo "`basename $0`: error could not copy the file" >&2  
  12. fi   
  13. /home/l/g/tomotoboy >touch myfile   
  14. /home/l/g/tomotoboy >ifcp   
  15. good copy   
  16. /home/l/g/tomotoboy >  


褰撳墠鐩綍嫻嬭瘯
褰撹繍琛屼竴浜涚鐞嗚剼鏈椂錛屽彲鑳借鍦ㄦ牴鐩綍涓嬭繍琛屽畠錛岀壒鍒槸縐誨姩鏌愮鍏ㄥ眬鏂囦歡鎴栬繘琛屾潈闄愭敼鍙樻椂銆備竴涓畝鍗曠殑嫻嬭瘯鍙互鑾風(fēng)煡鏄惁榪愯鍦ㄦ牴鐩綍涓嬨備笅闈㈣剼鏈腑鍙橀噺DIRECTORY浣跨敤褰撳墠鐩綍鐨勫懡浠ゆ浛鎹㈡搷浣滐紝鐒跺悗姝ゅ彉閲忓間笌 " / "瀛楃涓叉瘮杈冿紙/涓烘牴鐩綍錛?銆傚鏋滃彉閲忓間笌瀛楃涓蹭笉絳夛紝鍒欑敤鎴烽鍑鴻剼鏈紝閫鍑虹姸鎬佷負1鎰忓懗閿欒淇℃伅浜х敓銆?
Shell浠g爜
  1. /home/l/g/tomotoboy >ifpwd   
  2. You need to be in the root directory not /home/l/g/tomotoboy to run this script   
  3. /home/l/g/tomotoboy >cd /etc   
  4. /etc >cd /   
  5. / >/home/l/g/tomotoboy/ifpwd   
  6. / >cat ifpwd   
  7. cat: cannot open ifpwd   
  8. / >cat /home/l/g/tomotoboy/ifpwd   
  9. #!/bin/sh   
  10. #ifpwd   
  11. DIRECTORY=`pwd`   
  12. #grab the current directory   
  13. if [ "$DIRECTORY" != "/" ];then   
  14. #is it the root directory?   
  15. #no ,the direct output to standard  error,which is the screen by default.   
  16. echo "You need to be in the root directory not $DIRECTORY to run this script" >&2  
  17. #exit with a value of 1, an error   
  18. exit 1  
  19. fi  


鏂囦歡鏉冮檺嫻嬭瘯
鍙互鐢╥ f璇彞嫻嬭瘯鏂囦歡鏉冮檺錛屼笅闈㈢畝鍗曟祴璇曟枃浠秙ed.txt鏄惁鍙啓
Shell浠g爜
  1. /home/l/g/tomotoboy >ifwr sed.txt   
  2. You can write to sed.txt   
  3. /home/l/g/tomotoboy >cat ifwr   
  4. #!/bin/sh   
  5. #ifwr   
  6. if [ ! -w "$1" ]; then   
  7.   echo "You cannot write to $1" >&2  
  8. else   
  9.   echo "You can write to $1"  
  10. fi  


嫻嬭瘯浼犻掑埌鑴氭湰涓殑鍙傛暟
if璇彞鍙敤鏉ユ祴璇曚紶鍏ヨ剼鏈腑鍙傛暟鐨勪釜鏁般備嬌鐢ㄧ壒瀹氬彉閲?#錛岃〃紺鴻皟鐢ㄥ弬鏁扮殑涓暟銆傚彲浠ユ祴璇曟墍闇鍙傛暟涓暟涓庤皟鐢ㄥ弬鏁頒釜鏁版槸鍚︾浉絳夈備互涓嬫祴璇曠‘淇濊剼鏈湁涓変釜鍙傛暟銆傚鏋滄病鏈夛紝鍒欒繑鍥炰竴涓彲鐢ㄤ俊鎭埌鏍囧噯閿欒錛岀劧鍚庝唬鐮侀鍑哄茍鏄劇ず閫鍑虹姸鎬併傚鏋滃弬鏁版暟鐩瓑浜?錛屽垯鏄劇ず鎵鏈夊弬鏁般?
Shell浠g爜
  1. /home/l/g/tomotoboy >cat ifparam   
  2. #!/bin/sh   
  3. #ifparam   
  4. if [ $# -lt 3 ]; then   
  5. #less than 3 parameters called,echo  a usage message and exit   
  6. echo "Usage: `basename $0` arg1 arg2 arg3" >&2  
  7. exit   
  8. fi   
  9. #good ,receive 3 params, let's echo them   
  10. echo "arg1: $1"  
  11. echo "arg2: $2"  
  12. echo "arg3: $3"  
  13. /home/l/g/tomotoboy >ifparam yang shi hai   
  14. arg1: yang   
  15. arg2: shi   
  16. arg3: hai  


鍐沖畾鑴氭湰鏄惁涓轟氦浜掓ā寮?
鏈夋椂闇瑕佺煡閬撹剼鏈繍琛屾槸浜や簰妯″紡錛堢粓绔ā寮忥級榪樻槸闈炰氦浜掓ā寮忥紙cron鎴朼t錛?銆傝剼鏈篃璁?dāng)R渶瑕佽繖涓俊鎭互鍐沖畾浠庡摢閲屽彇寰楄緭鍏ヤ互鍙婅緭鍑哄埌鍝噷錛屼嬌鐢╰est鍛戒護騫跺甫鏈?t閫夐」寰堝鏄撶‘璁よ繖涓鐐廣傚鏋渢est榪斿洖鍊間負1錛屽垯涓轟氦浜掓ā寮忋?
Shell浠g爜
  1. /home/l/g/tomotoboy >cat ifinteractive   
  2. #!/bin/sh   
  3. #ifinteractive   
  4. if [ -t ];then   
  5. echo "We are interactive with a terminal"  
  6. else   
  7. echo "We must be running from some background process probably cron or at"  
  8. fi   
  9. /home/l/g/tomotoboy >ifinteractive   
  10. We are interactive with a terminal  

綆鍗曠殑if else璇彞
涓嬩竴涓猧f璇彞鏈夊彲鑳芥槸浣跨敤鏈騫挎硾鐨勶細
Shell浠g爜
  1. if鏉′歡   
  2. then   
  3. 鍛戒護1  
  4. else   
  5. 鍛戒護2  
  6. fi  
浣跨敤if璇彞鐨別lse閮ㄥ垎鍙湪鏉′歡嫻嬭瘯涓哄亣鏃墮噰鍙栭傚綋鍔ㄤ綔銆?
鍙橀噺璁劇疆嫻嬭瘯錛屼笅闈㈢殑渚嬪瓙嫻嬭瘯鐜鍙橀噺EDITOR鏄惁宸茶緗傚鏋淓DITOR鍙橀噺涓虹┖錛屽皢姝や俊鎭氱煡鐢ㄦ埛銆傚鏋滃凡璁劇疆錛屽湪灞忓箷涓婃樉紺虹紪杈戠被鍨嬨?
Shell浠g爜
  1. /home/l/g/tomotoboy >echo $EDITOR   
  2.   
  3. /home/l/g/tomotoboy >cat ifeditor   
  4. #!/bin/sh   
  5. #ifeditor   
  6. if [ -z "$EDITOR" ];then   
  7. #the variable has not been set   
  8. echo "Your EDITOR environment is not set"  
  9. else   
  10. #let's  us see what is it   
  11. echo "Using $EDITOR as the default editor"  
  12. fi   
  13. /home/l/g/tomotoboy >ifeditor   
  14. Your EDITOR environment is not set   
  15. /home/l/g/tomotoboy >  


媯嫻嬫渶鍚庡懡浠ょ姸鎬?/strong>
鍓嶉潰灝嗙洰褰曞悕浼犲叆鑴氭湰鍒涘緩浜嗕竴涓洰褰曪紝鑴氭湰鐒跺悗鎻愮ず鐢ㄦ埛鏄惁搴斿垱寤虹洰褰曘備笅闈㈢殑渚嬪瓙鍒涘緩涓涓洰褰曪紝騫朵粠褰撳墠鐩綍灝嗘墍鏈?*.txt鏂囦歡鎷峰叆鏂扮洰褰曘備絾鏄繖孌佃剼鏈腑鐢ㄦ渶鍚庣姸鎬佸懡浠ゆ嫻嬩簡姣忎竴涓剼鏈槸鍚︽垚鍔熸墽琛屻傚鏋滃懡浠ゅけ璐ュ垯閫氱煡鐢ㄦ埛銆?
Shell浠g爜
  1. /home/l/g/tomotoboy >cat ifmkdir   
  2. #!/bin/sh   
  3. #ifmkdir   
  4. DIR_NAME=testdirec   
  5. #where we are?   
  6. THERE=`pwd`   
  7. #send all output to system dustbin   
  8. mkdir $DIR_NAME >/dev/null 2>&1  
  9. #is it a directory?   
  10. if [ -d $DIR_NAME ];then   
  11. #can we cd to the directory   
  12.   cd $DIR_NAME   
  13.   if [ $? = 0 ];then   
  14.   #yes we can   
  15.   HERE=`pwd`   
  16.   echo "$HERE"  
  17.   cp $THERE/*.txt $HERE   
  18.   else   
  19.    echo "Cannot cd to $DIR_NAME" >&2  
  20.    exit 1  
  21.   fi   
  22. else   
  23.   echo "Cannot create directory $DIR_NAME" >&2  
  24.   exit 1  
  25. fi  

綆鍗曠殑瀹夊叏鐧誨綍鑴氭湰
浠ヤ笅鏄敤鎴風(fēng)櫥褰曟椂鍚姩搴旂敤鍓嶅姞鍏ョ浉搴斿畨鍏ㄩ檺鍒跺姛鑳界殑鍩烘湰妗嗘灦銆傞鍏堟彁紺鴻緭鍏ョ敤鎴峰悕鍜屽瘑鐮侊紝濡傛灉鐢ㄦ埛鍚嶅拰瀵嗙爜鍧囧尮閰嶈剼鏈腑鐩稿簲瀛楃涓詫紝鐢ㄦ埛鐧誨綍鎴愬姛錛屽惁鍒欑敤鎴烽鍑恒傝剼鏈鍏堣緗彉閲忎負鍋団旀繪槸鍋囧畾鐢ㄦ埛杈撳叆閿欒錛宻tty褰撳墠璁劇疆琚繚瀛橈紝浠ヤ究闅愯棌passwd鍩熶腑瀛楃錛岀劧鍚庨噸鏂頒繚瀛榮tty璁劇疆銆傚鏋滅敤鎴稩 D鍜屽瘑鐮佹紜紙瀵嗙爜鏄痬yday錛?錛屾槑浜甀NVALID_USER鍜孖NVALID_PASSWD璁劇疆涓簄o琛ㄧず鏈夋晥鐢ㄦ埛鎴栧瘑鐮侊紝鐒跺悗鎵ц嫻嬭瘯錛屽鏋滀袱涓彉閲忓叾涓箣涓涓簓es錛岀己鐪佹儏鍐典笅錛岃剼鏈鍑虹敤鎴楓傞敭鍏ユ湁鏁堢殑ID鍜屽瘑鐮侊紝鐢ㄦ埛灝嗗厑璁歌繘鍏ャ傝繖鏄竴縐嶇櫥褰曡剼鏈殑鍩烘湰妗嗘灦銆備笅闈㈢殑渚嬪瓙涓湁鏁堢敤鎴稩D涓篸ave鎴杢omotoboy銆?
Shell浠g爜
  1. #!/bin/sh   
  2. #ifpass   
  3. #set the variables to false   
  4. INVALID_USER=yes   
  5. INVALID_PASSWD=yes   
  6. #set the current stty settings   
  7. SAVEDSTTY=`stty -g`   
  8. echo "You are logging into a sensitive area"  
  9. echo -n "Enter your ID name:"  
  10. read NAME   
  11. #hide the characters typed in   
  12. stty -echo   
  13. echo "Enter your password :"  
  14. read PASSWORD   
  15. #back on again   
  16. stty $SAVEDSTTY   
  17. if [ "$NAME" = "tomotoboy" ] || [ "$NAME" = "dave" ]; then   
  18.  #if a valid then set variable   
  19.     INVALID_USER=no   
  20. fi   
  21. if [ "$PASSWORD" = "myday" ];then   
  22.  #if valid password then set variable   
  23.     INVALID_PASSWD=no   
  24. fi   
  25. if [ "$INVALID_USER" = "yes" ] || [ "$INVALID_PASSWD" = "yes" ];then   
  26.    echo "`basename $0` : Sorry wrong password or userid"  
  27.    exit 1  
  28. fi   
  29. echo "corrent user id and password given"  



Gavin.lee 2009-11-29 12:05 鍙戣〃璇勮
]]>
鎺у埗嫻佺粨鏋勨斺攃asehttp://www.tkk7.com/jzone/articles/304088.htmlGavin.leeGavin.leeSun, 29 Nov 2009 04:05:00 GMThttp://www.tkk7.com/jzone/articles/304088.html 
case璇彞
case璇彞涓哄閫夋嫨璇彞銆傚彲浠ョ敤case璇彞鍖歸厤涓涓間笌涓涓ā寮忥紝濡傛灉鍖歸厤鎴愬姛錛屾墽琛岀浉鍖歸厤鐨勫懡浠ゃ俢ase璇彞鏍煎紡濡備笅錛?
Shell浠g爜
  1. case 鍊?nbsp;in   
  2. 妯″紡1 )   
  3.   鍛戒護1  
  4.   . . .   
  5.   ;;   
  6. 妯″紡2 )   
  7.   鍛戒護2  
  8.   . . .   
  9.   ;;   
  10. esac  


case宸ヤ綔鏂瑰紡濡備笂鎵紺恒傚彇鍊煎悗闈㈠繀欏諱負鍗曡瘝 in錛屾瘡涓妯″紡蹇呴』浠ュ彸鎷彿緇撴潫銆傚彇鍊煎彲浠ヤ負鍙橀噺鎴栧父鏁般傚尮閰嶅彂鐜板彇鍊肩鍚堟煇涓妯″紡鍚庯紝鍏墮棿鎵鏈夊懡浠ゅ紑濮嬫墽琛岀洿鑷?;

鍙栧煎皢媯嫻嬪尮閰嶇殑姣忎竴涓ā寮忋備竴鏃︽ā寮忓尮閰嶏紝鍒欐墽琛屽畬鍖歸厤妯″紡鐩稿簲鍛戒護鍚庝笉鍐嶇戶緇叾浠栨ā寮忋傚鏋滄棤涓鍖歸厤妯″紡錛屼嬌鐢ㄦ槦鍙?鎹曡幏璇ュ鹼紝鍐嶆帴鍙楀叾浠栬緭鍏ャ傛ā寮忛儴鍒嗗彲鑳藉寘鎷厓瀛楃錛屼笌鍦ㄥ懡浠よ鏂囦歡鎵╁睍鍚嶄緥瀛愪腑浣跨敤榪囩殑鍖歸厤妯″紡綾誨瀷鐩稿悓錛屽嵆錛?
* 浠繪剰瀛楃銆?/td>
錛?/td> 浠繪剰鍗曞瓧絎︺?/td>
[..] 綾繪垨鑼冨洿涓換鎰忓瓧絎︺?/td>

鏉ョ湅涓涓畝鍗曠殑case璇彞錛?/strong>
Shell浠g爜
  1. /home/l/g/tomotoboy >cat caseselect   
  2. #!/bin/sh   
  3. #caseselect   
  4. echo - n "Enter a number from 1 to 5 :"  
  5. read ANS   
  6.  case $ANS in   
  7. 1) echo "you select 1"  
  8. ;;   
  9. 2) echo "you select 2"  
  10. ;;   
  11. 3) echo "you select 3"  
  12. ;;   
  13. 4) echo "you select 4"  
  14. ;;   
  15. 5) echo "you select 5"  
  16. ;;   
  17. *) echo "`basename $0`: This is not between 1 and 5" >&2  
  18. ;;   
  19. esac   
  20.   
  21. /home/l/g/tomotoboy >caseselect   
  22. - n Enter a number from 1 to 5 :   
  23. 4  
  24. you select 4  
  25. /home/l/g/tomotoboy >caseselect   
  26. - n Enter a number from 1 to 5 :   
  27. 7  
  28. caseselect: This is not between 1 and 5  


瀵瑰尮閰嶆ā寮忎嬌鐢▅
Shell浠g爜
  1. /home/l/g/tomotoboy >cat caseterm   
  2. #!/bin/sh   
  3. #caseterm   
  4. echo "choices are.. vt100, vt102, vt220"  
  5. echo -n "enter your terminal type :"  
  6. read TERMINAL   
  7.  case $TERMINAL in   
  8.  vt100|vt102) TERM=vt100   
  9.  ;;   
  10.  vt220) TERM=vt220   
  11.  ;;   
  12.  *) echo "`basename $0`: Unknown reponse" >&2  
  13.    echo "setting it to vt100 anyway,so there"  
  14.    TERM=vt100   
  15.  ;;   
  16. esac   
  17. export TERM   
  18. echo "Your terminal is set to $TERM'   
  19. "caseterm" 17 lines, 348 characters   
  20.   
  21. /home/l/g/tomotoboy >caseterm   
  22. choices are.. vt100, vt102, vt220   
  23. -n enter your terminal type :   
  24. vt100   
  25. Your terminal is set to vt100'  

鎻愮ず閿叆y鎴杗
case鐨勪竴涓湁鏁堢敤娉曟槸鎻愮ず鐢ㄦ埛鍝嶅簲浠ュ喅瀹氭槸鍚︾戶緇繘紼嬨傝繖閲屾彁紺鴻緭鍏浠ョ戶緇鐞唍閫鍑恒傚鏋滅敤鎴瘋緭鍏銆亂鎴杫es錛屽鐞嗙戶緇墽琛宑ase璇彞鍚庨潰閮ㄥ垎銆傚鏋滅敤鎴瘋緭鍏銆乶鎴杗o鎴栧叾浠栧搷搴旓紝鐢ㄦ埛閫鍑鴻剼鏈?
Shell浠g爜
  1. /home/l/g/tomotoboy >cat caseans   
  2. #!/bin/sh   
  3. #caseans   
  4. echo -n "Do you wish to proceed [y..n]"  
  5. read ANS   
  6.  case $ANS in   
  7.  y|Y|yes|Yes) echo "yes is selected"  
  8.  ;;   
  9.  n|N|no|No) echo "no is selectd"  
  10.  ;;   
  11.  *) echo "`basename $0` : Unknown response" >&2  
  12.  ;;   
  13.  esac   
  14.   
  15. /home/l/g/tomotoboy >caseans   
  16. -n Do you wish to proceed [y..n]   
  17. y   
  18. yes is selected  


case涓庡懡浠ゅ弬鏁頒紶鍏?/strong>
Shell浠g爜
  1. /home/l/g/tomotoboy >cat >> caseparam   
  2. #!/bin/sh   
  3. #caseparam   
  4. if [ $# != 1 ];then   
  5.    echo "Usage:`basename $0` [start|stop|help]" >&2  
  6. fi   
  7. OPT=$1  
  8. case $OPT in   
  9.  start) echo "starting..`basename $0`"  
  10. ;;   
  11.  stop) echo "stopping..`basename $0`"  
  12. ;;   
  13.  help) echo "stopping..`basename $0`"  
  14.  echo "Usage:`basename $0` [start|stop|help]"  
  15. ;;   
  16.  *) echo "stopping..`basename $0`"  
  17.  echo "Usage:`basename $0` [start|stop|help]"  
  18. ;;   
  19. esac   
  20. /home/l/g/tomotoboy >chmod u+x caseparam   
  21. /home/l/g/tomotoboy >caseparam help   
  22. stopping..caseparam   
  23. Usage:caseparam [start|stop|help]   
  24. /home/l/g/tomotoboy >caseparam start   
  25. starting..caseparam  


鎹曡幏杈撳叆騫舵墽琛岀┖鍛戒護
涓嶄竴瀹氳鍦ㄥ尮閰嶆ā寮忓悗鍔犲叆鍛戒護錛屽鏋滀綘鍘熸湰涓嶆兂鍋氫粈涔堬紝鍙槸鍦ㄨ繘涓姝ュ鐞嗗墠榪囨護鍑烘剰澶栧搷搴旓紝榪欐牱鍋氭槸涓縐嶅ソ鍔炴硶銆傚鏋滆榪愯瀵瑰簲浜庝竴涓細璁¢儴闂ㄧ殑甯愮洰鎶ヨ〃錛屽繀欏婚鍏堝湪鍐沖畾榪愯鎶ヨ〃鐨勭被鍨嬪墠紜鐢ㄦ埛杈撳叆涓涓湁鏁堢殑閮ㄩ棬鍙鳳紝鍖歸厤鎵鏈夊彲鑳藉鹼紝鍏朵粬鍊兼棤鏁堛傜敤case鍙互寰堝鏄撳疄鐜頒笂榪板姛鑳姐備笅闈㈢殑鑴氭湰涓鏋滅敤鎴瘋緭鍏ラ儴闂ㄥ彿涓嶆槸234銆?53銆?55鎴?54錛岀敤鎴烽鍑哄茍榪斿洖鍙敤淇℃伅銆備竴鏃﹀搷搴斾簡鐢ㄦ埛鐨勬湁鏁堥儴闂ㄥ彿錛岃剼鏈簲鐢ㄥ悓鏍風(fēng)殑鎶鏈彇寰楁姤琛ㄧ被鍨嬶紝鍦╟ase璇彞鏈熬鏄劇ず鏈夋晥鐨勯儴闂ㄥ彿鍜屾姤琛ㄧ被鍨嬨傝剼鏈涓嬶細
Shell浠g爜
  1. #!/bin/sh   
  2. # casevalid   
  3. echo -n "enter the account dept No: "  
  4. read ACC   
  5.  case $ACC in   
  6.       234);;   
  7.       453);;   
  8.       655);;   
  9.       454);;   
  10.          *) echo "basename $01`: Unknon dept No"  
  11.               echo "try..234,453,655,454"  
  12.               exit 1  
  13.               ;;   
  14. esac   
  15. #if we are here, then we have a validdated the dept no   
  16. echo " 1 . post"  
  17. echo " 2 . prior"  
  18. echo -n "enter the type of report: "  
  19. read ACC_TYPE   
  20.    case $ACC_TYPE in   
  21.    1)TYPE=post;;   
  22.    2)TYPE=prior;;   
  23.    *) echo "`basename $0`: Unknown account type." >&2  
  24. "casevalid" 29 lines, 665 characters   
  25. /home/l/g/tomotoboy >casevalid   
  26. -n enter the account dept No:   
  27. 454  
  28.  1 . post   
  29.  2 . prior   
  30. -n enter the type of report:   
  31. 1  
  32. now running report for dept 454 for the type post  


Gavin.lee 2009-11-29 12:05 鍙戣〃璇勮
]]>
鏉′歡鎺у埗錛坱est錛宔xpr鈥︹︼級http://www.tkk7.com/jzone/articles/304086.htmlGavin.leeGavin.leeSun, 29 Nov 2009 04:01:00 GMThttp://www.tkk7.com/jzone/articles/304086.html 
嫻嬭瘯鏂囦歡鐘舵?/strong>
test
test涓鑸湁涓ょ鏍煎紡錛屽嵆錛?
test condition
鎴?
[ condition ]
浣跨敤鏂規(guī)嫭鍙鋒椂錛岃娉ㄦ剰鍦ㄦ潯浠朵袱杈瑰姞涓婄┖鏍箋傛祴璇曟枃浠剁姸鎬佺殑鏉′歡琛ㄨ揪寮忓緢澶氾紝浣嗘槸鏈甯哥敤鐨勫彲鍦ㄤ笅琛ㄤ腑鏌ュ埌銆?
-d 鐩綍 -s 鏂囦歡闀垮害澶т簬0銆侀潪絀?/td>
-f 姝h鏂囦歡 -w 鍙啓
-L 絎﹀彿榪炴帴 -u 鏂囦歡鏈塻uid浣嶈緗?/td>
-r 鍙 -x 鍙墽琛?/td>

Shell浠g爜
  1. /home/l/g/tomotoboy >test -d sed.out   
  2. /home/l/g/tomotoboy >echo $?   
  3. 1  
  4.   
  5. /home/l/g/tomotoboy >test -f sed.out   
  6. /home/l/g/tomotoboy >echo $?   
  7. 0  
  8.   
  9. /home/l/g/tomotoboy >[ -f sed.out ]   
  10. /home/l/g/tomotoboy >echo $?   
  11. 0  
  12. /home/l/g/tomotoboy >[ -d sed.out ]   
  13. /home/l/g/tomotoboy >echo $?   
  14. 1  
  15.   
  16. /home/l/g/tomotoboy >[ -x sed.out ]   
  17. /home/l/g/tomotoboy >echo $?   
  18. 1  
  19.   
  20. /home/l/g/tomotoboy >[ -r sed.out ]   
  21. /home/l/g/tomotoboy >echo $?   
  22. 0  
  23.   
  24. /home/l/g/tomotoboy >[ -w sed.out ]   
  25. /home/l/g/tomotoboy >echo $?   
  26. 0  

嫻嬭瘯鏃朵嬌鐢ㄩ昏緫鎿嶄綔絎?/strong>
嫻嬭瘯鏂囦歡鐘舵佹槸鍚︿負OK錛屼絾鏄湁鏃惰姣旇緝涓や釜鏂囦歡鐘舵併俿hell鎻愪緵涓夌閫昏緫鎿嶄綔瀹屾垚姝ゅ姛鑳姐?
-a   閫昏緫涓庯紝鎿嶄綔絎︿袱杈瑰潎涓虹湡錛岀粨鏋滀負鐪燂紝鍚﹀垯涓哄亣銆?
-o   閫昏緫鎴栵紝鎿嶄綔絎︿袱杈逛竴杈逛負鐪燂紝緇撴灉涓虹湡錛屽惁鍒欎負鍋囥?
! 閫昏緫鍚︼紝鏉′歡涓哄亣錛岀粨鏋滀負鐪熴?
涓嬮潰姣旇緝涓や釜鏂囦歡sed.out銆乻ed.txt錛?
Shell浠g爜
  1. /home/l/g/tomotoboy >ls -al sed.out sed.txt   
  2. -rw-r--r--   1 tomotoboy member       159 Jul 30 16:47 sed.out   
  3. -rw-r--r--   1 tomotoboy member       655 Jul 31 14:44 sed.txt   
  4. /home/l/g/tomotoboy >[ -w sed.out -a -w sed.txt ]   
  5. /home/l/g/tomotoboy >echo $?   
  6. 0  
  7.   
  8. /home/l/g/tomotoboy >[ -x sed.out -a -r sed.txt]   
  9. -bash: [: missing `]'   
  10. /home/l/g/tomotoboy >[ -x sed.out -a -r sed.txt ]   
  11. /home/l/g/tomotoboy >echo $?   
  12. 1  
  13.   
  14. /home/l/g/tomotoboy >[ -x sed.out -o -r sed.txt ]   
  15. /home/l/g/tomotoboy >echo $?   
  16. 0  

瀛楃涓叉祴璇?/strong>
瀛楃涓叉祴璇曟槸閿欒鎹曡幏寰堥噸瑕佺殑涓閮ㄥ垎錛岀壒鍒湪嫻嬭瘯鐢ㄦ埛杈撳叆鎴栨瘮杈冨彉閲忔椂灝や負閲嶈銆傚瓧絎︿覆嫻嬭瘯鏈?縐嶆牸寮忥細
test "string"
test string_operator "string"
test "string" string_operator "string"
[ string_operator "string" ]
[ "string" string_operator "string" ]
榪欓噷錛宻tring_operator鍙負錛?
=     涓や釜瀛楃涓茬浉絳夈?/td>
!=    涓や釜瀛楃涓蹭笉絳夈?/td>
-z    絀轟覆銆?/td>
-n    闈炵┖涓層?/td>

Shell浠g爜
  1. /home/l/g/tomotoboy >[ -z $HELLO ]   
  2. /home/l/g/tomotoboy >echo $?   
  3. 0  
  4.   
  5. /home/l/g/tomotoboy >HELLO="hello"  
  6. /home/l/g/tomotoboy >[ -z $HELLO ]   
  7. /home/l/g/tomotoboy >echo $?   
  8. 1  
  9.   
  10. /home/l/g/tomotoboy >[ -n $HELLO ]   
  11. /home/l/g/tomotoboy >echo $?   
  12. 0  
  13.   
  14. /home/l/g/tomotoboy >[ !-n $HELLO ]   
  15. [ nohup -p 1 $HELLO ]   
  16. -bash: [: too many arguments   
  17. /home/l/g/tomotoboy >[ ![ -n $HELLO ] ]   
  18. [ [ -z $HELLO ] -n $HELLO ] ]   
  19. -bash: [: too many arguments   
  20. /home/l/g/tomotoboy >HI="hi"  
  21. /home/l/g/tomotoboy >[ $HELLO = $HI]   
  22. -bash: [: missing `]'   
  23. /home/l/g/tomotoboy >[ $HELLO = $HI ]   
  24. /home/l/g/tomotoboy >echo $?   
  25. 1  
  26.   
  27. /home/l/g/tomotoboy >[ $HELLO != $HI ]   
  28. /home/l/g/tomotoboy >echo $?   
  29. 0  

嫻嬭瘯鏁板?/strong>
嫻嬭瘯鏁板煎彲浠ヤ嬌鐢ㄨ澶氭搷浣滅錛屼竴鑸牸寮忓涓嬶細
"number" numeric_operator "number"
鎴栬?
[ "number" numeric_operator "number" ]
numeric_operator鍙負錛?
-eq   鏁板肩浉絳夈?/td>
-ne   鏁板間笉鐩哥瓑銆?/td>
-gt   絎竴涓暟澶т簬絎簩涓暟銆?/td>
-lt   絎竴涓暟灝忎簬絎簩涓暟銆?/td>
-le   絎竴涓暟灝忎簬絳変簬絎簩涓暟銆?/td>
-ge   絎竴涓暟澶т簬絳変簬絎簩涓暟銆?/td>

Shell浠g爜
  1. /home/l/g/tomotoboy >Nbr=10  
  2. /home/l/g/tomotoboy >Nbr1=20  
  3. /home/l/g/tomotoboy >echo $?   
  4. 0  
  5.   
  6. /home/l/g/tomotoboy >Nbr -ne Nbr1   
  7. -bash: Nbr: command not found   
  8. /home/l/g/tomotoboy >$Nbr -ne $Nbr1   
  9. -bash: 10: command not found   
  10. /home/l/g/tomotoboy >[ "$Nbr" -ne "$Nbr1" ]   
  11. /home/l/g/tomotoboy >echo $?   
  12. 0  
  13.   
  14. /home/l/g/tomotoboy >[ "$Nbr" -e "$Nbr1" ]   
  15. -bash: [: -e: binary operator expected   
  16. /home/l/g/tomotoboy >[ "$Nbr" -eq "$Nbr1" ]   
  17. /home/l/g/tomotoboy >echo $?   
  18. 1  
  19. /home/l/g/tomotoboy >[ "$Nbr" -gt "$Nbr1" ]   
  20. /home/l/g/tomotoboy >echo 4?   
  21. 4?   
  22. /home/l/g/tomotoboy >echo $?   
  23. 0  
  24.   
  25. /home/l/g/tomotoboy >[ "$Nbr" -gt "$Nbr1" ]   
  26. /home/l/g/tomotoboy >echo $?   
  27. 1  
  28.   
  29. /home/l/g/tomotoboy >[ "$Nbr" -lt "$Nbr1" ]   
  30. /home/l/g/tomotoboy >echo $?   
  31. 0  

鍙互涓嶅繀灝嗘暣鏁板兼斁鍏ュ彉閲忥紝鐩存帴鐢ㄦ暟瀛楁瘮杈冨嵆鍙紝浣嗚鍔犲紩鍙楓?
Shell浠g爜
  1. /home/l/g/tomotoboy >[ "99" -ge "60" ]   
  2. /home/l/g/tomotoboy >echo $?   
  3. 0  


expr鐢ㄦ硶
expr鍛戒護涓鑸敤浜庢暣鏁板鹼紝浣嗕篃鍙敤浜庡瓧絎︿覆銆備竴鑸牸寮忎負錛?
expr argument operator argument
expr涔熸槸涓涓墜宸ュ懡浠よ璁℃暟鍣ㄣ?
Shell浠g爜
  1. /home/l/g/tomotoboy >expr 10 + 10  
  2. 20  
  3.   
  4. /home/l/g/tomotoboy >expr 45 / 4  
  5. 11  

浣跨敤涔樺彿鏃訛紝蹇呴』鐢ㄥ弽鏂滅嚎灞忚斀鍏剁壒瀹氬惈涔夈傚洜涓簊hell鍙兘浼氳瑙f樉紺烘槦鍙風(fēng)殑鎰忎箟
Shell浠g爜
  1. /home/l/g/tomotoboy >expr 30 \* 100  
  2. 3000  

澧為噺璁℃暟expr鍦ㄥ驚鐜腑鐢ㄤ簬澧為噺璁$畻銆傞鍏堬紝寰幆鍒濆鍖栦負 0錛岀劧鍚庡驚鐜煎姞1錛屽弽寮曞彿鐨勭敤娉曟剰鍗蟲浛浠e懡浠ゃ傛渶鍩烘湰鐨勪竴縐嶆槸浠庯紙expr錛夊懡浠ゆ帴鍙楄緭鍑哄茍灝嗕箣鏀懼叆寰幆鍙橀噺
Shell浠g爜
  1. /home/l/g/tomotoboy >loop=0  
  2. /home/l/g/tomotoboy >loop=`expr $loop + 1`   
  3. /home/l/g/tomotoboy >echo   
  4.   
  5. /home/l/g/tomotoboy >echo $?   
  6. 0  
  7. /home/l/g/tomotoboy >echo $loop   
  8. 1  
鏁板兼祴璇?/strong>
鍙互鐢╡xpr嫻嬭瘯涓涓暟銆傚鏋滆瘯鍥捐綆楅潪鏁存暟錛屽皢榪斿洖閿欒銆?
/
Shell浠g爜
  1. home/l/g/tomotoboy >f=1.1  
  2. /home/l/g/tomotoboy >expr f + 10  
  3. expr: non-numeric argument   
  4. /home/l/g/tomotoboy >echo $?   
  5. 2  
  6.   
  7. /home/l/g/tomotoboy >expr $HELLO + 10  
  8. expr: non-numeric argument   
  9. /home/l/g/tomotoboy >echo $?   
  10. 2  
  11.   
  12. /home/l/g/tomotoboy >expr "$HELLO"  + 10  
  13. expr: non-numeric argument   
  14. /home/l/g/tomotoboy >echo $?   
  15. 2  
  16.   
  17. /home/l/g/tomotoboy >expr $f + 10  
  18. expr: non-numeric argument  

expr涔熷彲浠ヨ繑鍥炲叾鏈韓鐨勯鍑虹姸鎬侊紝涓嶅垢鐨勬槸榪斿洖鍊間笌緋葷粺鏈鍚庨鍑哄懡浠ゅ垰濂界浉鍙嶏紝鎴愬姛榪斿洖1錛屼換浣曞叾浠栧間負鏃犳晥鎴栭敊璇備笅闈㈢殑渚嬪瓙嫻嬭瘯涓や釜瀛楃涓叉槸鍚︾浉絳夛紝榪欓噷瀛楃涓蹭負“hello”鍜?#8220;hello” 銆?

Shell浠g爜
  1. /home/l/g/tomotoboy >expr $HELLO = "hello"  
  2. 1  
  3. /home/l/g/tomotoboy >echo $?   
  4. 0  

妯″紡鍖歸厤
expr涔熸湁妯″紡鍖歸厤鍔熻兘銆傚彲浠ヤ嬌鐢╡xpr閫氳繃鎸囧畾鍐掑彿閫夐」璁$畻瀛楃涓蹭腑瀛楃鏁般?*鎰忓嵆浠諱綍瀛楃閲嶅0嬈℃垨澶氭.
Shell浠g爜
  1. /home/l/g/tomotoboy >cat sed.txt   
  2. 605408211   pts/16       Jul 31 13:54   (218.0.1.42)   
  3. caodejun   pts/44       Jul 31 14:16    (219.148.133.31)   
  4. duke1988   pts/45       Jul 31 14:41    (218.104.163.66)   
  5. liuzk423   pts/6        Jul 20 08:27    (219.245.104.240)   
  6. nefu_luyanshen   pts/23       Jul 31 14:33      (218.25.6.142)   
  7. nefu_luyanshen   pts/48       Jul 31 12:59      (218.25.6.142)   
  8. shuzigui   pts/21       Jul 31 12:11    (121.35.248.193)   
  9. tomotoboy   pts/41       Jul 31 13:31   (219.221.99.155)   
  10. waterlooz   pts/25       Jul 31 08:48   (121.0.29.225)   
  11. wsoangel   pts/35       Jul 31 13:40    (116.233.219.10)   
  12. xp55699312   pts/42       Jul 31 14:12  (61.152.132.103)   
  13. zyy0904    pts/43       Jul 31 13:53    (125.33.195.36)   
  14.   
  15. /home/l/g/tomotoboy >VALUE=sed.txt   
  16. /home/l/g/tomotoboy >expr $VALUE : tomotoboy , '.*'  
  17. expr: syntax error   
  18. /home/l/g/tomotoboy >expr $VALUE : tomotoboy   
  19. 0  
  20.   
  21. /home/l/g/tomotoboy >   
  22. /home/l/g/tomotoboy >expr $VALUE:tomotoboy   
  23. sed.txt:tomotoboy   
  24. /home/l/g/tomotoboy >expr $VALUE: tomotoboy   
  25. expr: syntax error   
  26. /home/l/g/tomotoboy >expr $VALUE : tomotoboy   
  27. 0  
  28. /home/l/g/tomotoboy >expr $VALUE :tomotoboy   
  29. expr: syntax error   
  30. /home/l/g/tomotoboy >expr $VALUE : tomotoboy   
  31. 0  
  32. /home/l/g/tomotoboy >expr $VALUE : tomotoboy, '.*'  
  33. expr: syntax error   
  34. /home/l/g/tomotoboy >expr $VALUE : tomotoboy , '.*'  
  35. expr: syntax error   
  36.   
  37. /home/l/g/tomotoboy >expr $VALUE :  '.*'  
  38. 7  
  39.   
  40. /home/l/g/tomotoboy >expr $VALUE : tomotoboy   
  41. 0  
  42.   
  43. /home/l/g/tomotoboy >expr $VALUE : "tomotoboy"  
  44. 0  
  45.   
  46. /home/l/g/tomotoboy >expr $VALUE : "nefu_luyanshen"  
  47. 0  
榪欓噷娌℃湁鎼炴噦錛宼omotoboy鍜宯efu_luyanshen錛屾槑鏄庡瓨鍦ㄨ岀粨鏋滄槸0


Gavin.lee 2009-11-29 12:01 鍙戣〃璇勮
]]>
shell鍙橀噺鍙婄幆澧冨彉閲?/title><link>http://www.tkk7.com/jzone/articles/304084.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sun, 29 Nov 2009 04:00:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/304084.html</guid><description><![CDATA[<h3 class="type_original" title="鍘熷垱"><a ></a> </h3> <div id="2kgiecc" class="blog_content"><strong>鏈湴鍙橀噺</strong> <br /> 鏄劇ず鍙橀噺 <br /> <div id="kuss6iu" class="dp-highlighter"> <div id="ci4queq" class="bar"> <div id="yiokaqs" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>$GREAT_PICTURE =</span><span id="woqymq8" class="string">"die hard"</span><span>  </span></span></li> <li><span>$echo ${GREAT_PICTURE}   </span></li> <li><span>die hard   </span></li> <li><span>  </span></li> <li><span>$DOLLAR=</span><span id="2egwc4u" class="number">99</span><span>  </span></span></li> <li><span>$echo ${DOLLAR}   </span></li> <li><span id="imk62o6" class="number">99</span><span>  </span></span></li> <li><span>  </span></li> <li><span>$LAST_FILE=ZLPSO.txt   </span></li> <li><span>$echo ${LAST_FILE}   </span></li> <li><span>ZLPSO.txt  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">$GREAT_PICTURE ="die hard" $echo ${GREAT_PICTURE} die hard $DOLLAR=99 $echo ${DOLLAR} 99 $LAST_FILE=ZLPSO.txt $echo ${LAST_FILE} ZLPSO.txt</pre> <br /> 娓呴櫎鍙橀噺 <br /> <div id="mskgoc8" class="dp-highlighter"> <div id="ei6yiqs" class="bar"> <div id="qukuq2m" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>unset variable-name   </span></span></li> <li><span>$PC=enterprise   </span></li> <li><span>$echo ${PC}   </span></li> <li><span>enterprise   </span></li> <li><span>$unset PC   </span></li> <li><span>$echp ${PC}   </span></li> <li><span>$  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">unset variable-name $PC=enterprise $echo ${PC} enterprise $unset PC $echp ${PC} $</pre> <br /> 鏄劇ず鎵鏈夋湰鍦皊hell鍙橀噺 <br /> 浣跨敤set鍛戒護鏄劇ず鎵鏈夋湰鍦板畾涔夌殑shell鍙橀噺 <br /> <div id="scg2ui2" class="dp-highlighter"> <div id="awe6gsk" class="bar"> <div id="ukme0su" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>$set  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">$set</pre> <br /> <br /> 緇撳悎鍙橀噺鍊?<br /> 灝嗗彉閲忓茍鎺掑彲浠ヤ嬌鍙橀噺緇撳悎鍦ㄤ竴璧?<br /> <div id="wkoycio" class="dp-highlighter"> <div id="y8ww20c" class="bar"> <div id="2k0oamo" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>echo ${variable-name}${variable-name}   </span></span></li> <li><span>  </span></li> <li><span>$FIRST=</span><span id="keseggg" class="string">"Bruce"</span><span>  </span></span></li> <li><span>$SURNAME=Willis   </span></li> <li><span>$echo ${FIRST}${SURNAME}   </span></li> <li><span>Bruce Willis  </span></li> </ol> </div> <pre class="shell" style="display: none" name="code">echo ${variable-name}${variable-name} $FIRST="Bruce" $SURNAME=Willis $echo ${FIRST}${SURNAME} Bruce Willis</pre> <br /> 嫻嬭瘯鍙橀噺鏄惁宸茬粡璁劇疆 <br /> 鏈夋椂瑕佹祴璇曟槸鍚﹀凡璁劇疆鎴栧垵濮嬪寲鍙橀噺銆傚鏋滄湭璁劇疆鎴栧垵濮嬪寲錛屽氨鍙互浣跨敤鍙︿竴鍊箋傛鍛?<br /> 浠ゆ牸寮忎負錛?<br /> ${variable:-value} <br /> <br /> <strong>鐜鍙橀噺</strong> <br /> <br /> 宓屽叆shell鍙橀噺 <br /> Brourne shell鏈変竴浜涢鐣欑殑鐜鍙橀噺鍚嶏紝榪欎簺鍙橀噺鍚嶄笉鑳界敤浣滃叾浠栫敤閫斻傞氬父鍦?etc/profile涓緩绔嬭繖浜涘祵鍏ョ殑鐜鍙橀噺錛屼絾涔熶笉瀹屽叏鏄紝榪欏彇鍐充簬鐢ㄦ埛鑷繁銆備互涓嬫槸宓屽叆 shell鍙橀噺鍒楄〃銆?<br /> <br /> 璁劇疆鐜鍙橀噺 <br /> VARIABLE-NAME= value錛沞xport VARIABLE-NAME <br /> 鍦ㄤ袱涓懡浠や箣闂存槸涓涓垎鍙鳳紝涔熷彲浠ヨ繖鏍峰啓錛?<br /> VARIABLE-NAME= value <br /> Export VARIABLE-NAME <br /> <br /> 鏄劇ず鍜屾竻闄ょ幆澧冨彉閲忎笌鏈湴鍙橀噺涓鑷?<br /> <br /> set鍛戒護 <br /> 鍦?HOME.profile鏂囦歡涓緗幆澧冨彉閲忔椂錛岃繕鏈夊彟涓縐嶆柟娉曞鍑鴻繖浜涘彉閲忋備嬌鐢╯et鍛戒護- a閫夐」錛屽嵆set -a鎸囨槑鎵鏈夊彉閲忕洿鎺ヨ瀵煎嚭銆備笉瑕佸湪/etc/profile涓嬌鐢ㄨ繖縐嶆柟娉曪紝鏈濂藉彧鍦ㄨ嚜宸辯殑$HOME.profile鏂囦歡涓嬌鐢?<br /> <div id="ewyi0q8" class="dp-highlighter"> <div id="w2cg6a0" class="bar"> <div id="cmm44yy" class="tools">Shell浠g爜 <a title="澶嶅埗浠g爜" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ></a></div> </div> <ol class="dp-default"> <li><span><span>$pg .profile   </span></span></li> <li><span># .profile   </span></li> <li><span>MAIL=/usr/mail/${LOGNAME:?}   </span></li> <li><span>PS1=</span><span id="wgye6i8" class="string">"`hostname`>"</span><span>  </span></span></li> </ol> </div> <pre class="shell" style="display: none" name="code">$pg .profile # .profile MAIL=/usr/mail/${LOGNAME:?} PS1="`hostname`>"</pre> <br /> <strong>浣嶇疆鍙橀噺鍙傛暟</strong> <br /> 鍦ㄨ剼鏈腑浣嶇疆鍙傛暟 <br /> <table class="bbcode"> <tbody> <tr> <td>$0 </td> <td>$1 </td> <td>&2 </td> <td>$3 </td> <td>$4 </td> <td>$5 </td> <td>$6 </td> <td>$6 </td> <td>$7 </td> <td>$8 </td> <td>$9 </td> <td>${10} </td> <td>${11}</td> <td>……</td> </tr> <tr> <td>鑴氭湰鏂囦歡鍚?</td> <td>絎竴涓弬鏁?</td> <td>絎簩涓弬鏁?</td> <td>……</td> <td>  </td> <td>  </td> <td>  </td> <td>  </td> <td>  </td> <td>  </td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <br /> <br /> 鐗瑰畾鍙橀噺鍑芥暟 <br /> <table class="bbcode"> <tbody> <tr> <td>$#</td> <td>浼犻掑埌鑴氭湰鐨勫弬鏁頒釜鏁?/td> </tr> <tr> <td>$*</td> <td>浠ヤ竴涓崟瀛楃涓叉樉紺烘墍鏈夊悜鑴氭湰浼犻掔殑鍙傛暟銆備笌浣嶇疆鍙橀噺涓嶅悓錛屾閫夐」鍙傛暟鍙秴榪?9涓?/td> </tr> <tr> <td>$$</td> <td>鑴氭湰榪愯鐨勫綋鍓嶈繘紼婭D鍙?/td> </tr> <tr> <td>$!</td> <td>鍚庡彴榪愯鐨勬渶鍚庝竴涓繘紼嬬殑榪涚▼ID鍙?/td> </tr> <tr> <td>$@</td> <td>涓?#鐩稿悓錛屼絾鏄嬌鐢ㄦ椂鍔犲紩鍙鳳紝騫跺湪寮曞彿涓繑鍥炴瘡涓弬鏁?/td> </tr> <tr> <td>$-</td> <td>鏄劇ずshell浣跨敤鐨勫綋鍓嶉夐」錛屼笌set鍛戒護鍔熻兘鐩稿悓</td> </tr> <tr> <td>$?</td> <td>鏄劇ず鏈鍚庡懡浠ょ殑閫鍑虹姸鎬併?琛ㄧず娌℃湁閿欒錛屽叾浠栦換浣曞艱〃鏄庢湁閿欒銆?/td> </tr> </tbody> </table> </div> <img src ="http://www.tkk7.com/jzone/aggbug/304084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-11-29 12:00 <a href="http://www.tkk7.com/jzone/articles/304084.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐧婚檰鐜http://www.tkk7.com/jzone/articles/304083.htmlGavin.leeGavin.leeSun, 29 Nov 2009 03:59:00 GMThttp://www.tkk7.com/jzone/articles/304083.html 瀹冧繚瀛樼潃鐢ㄦ埛鍚嶃佸姞瀵嗗悗鐨勫瘑鐮佺瓑淇℃伅錛屾垜浠櫥褰曠郴緇熸墍鏈変俊鎭兘瑕佸湪閲岄潰鏌ユ壘
Shell浠g爜
  1. -bash-3.00$ cat /etc/passwd | tr ":" "\t" | sort -k0   
  2. adm     x       4       4       Admin   /var/adm   
  3. bin     x       2       2               /usr/bin   
  4. daemon  x       1       1               /   
  5. gdm     x       50      50      GDM Reserved UID        /   
  6. jiang   x       100     1               /       /bin/sh   
  7. listen  x       37      4       Network Admin   /usr/net/nls   
  8. lp      x       71      8       Line Printer Admin      /usr/spool/lp   
  9. noaccess        x       60002   60002   No Access User  /   
  10. nobody  x       60001   60001   NFS Anonymous Access User       /   
  11. nobody4 x       65534   65534   SunOS 4.x NFS Anonymous Access User     /   
  12. nuucp   x       9       9       uucp Admin      /var/spool/uucppublic      
  13.   
  14. /usr/lib/uucp/uucico   
  15. root    x       0       0       Super-User      /       /bin/bash   
  16. smmsp   x       25      25      SendMail Message Submission Program     /   
  17. sys     x       3       3               /   
  18. ttaserv x       101     100             /       /bin/sh   
  19. ttasys  x       102     100             /       /bin/sh   
  20. uucp    x       5       5       uucp Admin      /usr/lib/uucp   
  21. webservd        x       80      80      WebServer Reserved UID  /   
  22. www     x       81      81      WebServer User  /   
  23. -bash-3.00$ cat /etc/passwd | sed -n  '/jiang/'p   
  24. jiang:x:100:1::/:/bin/sh   
  25. -bash-3.00$ cat /etc/passwd | sed -n  '/jiang/'p | tr ':' '\t'  
  26. jiang   x       100     1               /       /bin/sh  


鐢ㄦ埛鐧誨綍鏃惰嚜鍔ㄨ鍙?etc/profile 姝ゆ枃浠跺寘鍚細
  • 鍏ㄥ眬鎴栧眬閮ㄧ幆澧冨彉閲忋?
  • PATH淇℃伅
  • 緇堢璁劇疆
  • 瀹夊叏鍛戒護
  • 鏃ユ湡淇℃伅鎴栨斁寮冩搷浣滀俊鎭?

璁╂垜浠潵鐪嬩竴涓緇嗙殑profile
Shell浠g爜
  1. -bash-3.00$ cat /etc/profile   
  2. #ident  "@(#)profile    1.19    01/03/13 SMI"   /* SVr4.0 1.3   */   
  3.   
  4. # The profile that all logins get before using their own .profile.   
  5.   
  6. trap ""  2 3 #蹇界暐涓や釜淇″彿錛屽嵆浣跨敤QUIT閫鍑烘垨<Ctrl-c>閿仠姝㈡枃浠舵墽琛?  
  7.   
  8.   
  9. ulimit -d 100000 #闄愬埗鍐呭瓨婧㈠嚭錛岃緗暟鎹鐨勬渶澶у鹼細鍗曚綅kbytes   
  10. export LOGNAME PATH #瀵煎嚭LOGNAME 鍜?nbsp;PATH   
  11. export LANG=C #璁劇疆璇█鐜   
  12. if [ "$TERM" = "" ] #璁劇疆緇堢綾誨瀷   
  13. then   
  14.         if /bin/i386   
  15.         then   
  16.                 TERM=sun-color   
  17.         else   
  18.                 TERM=sun   
  19.         fi   
  20.         export TERM   
  21. fi   
  22.   
  23. #       Login and -su shells get /etc/profile services.   
  24. #       -rsh is given its environment in its .profile.   
  25.   
  26. case "$0" in   
  27.   
  28. -sh | -ksh | -jsh | -bash)   
  29.   
  30.         if [ ! -f .hushlogin ]   
  31.         then   
  32.                 /usr/sbin/quota   
  33.                 #       Allow the user to break the Message-Of-The-Day only.   
  34.                 trap "trap '' 2"  2  
  35.                 /bin/cat -s /etc/motd   
  36.                 trap "" 2  
  37.   
  38.                 /bin/mail -E   
  39.                 case $? in #寤虹珛閭歡淇℃伅錛堝綋鏈夋柊閭歡鍒拌揪鏃舵樉紺烘彁紺轟俊鎭級   
  40.                 0)   
  41.                         echo "You have new mail."  
  42.                         ;;   
  43.                 2)   
  44.                         echo "You have mail."  
  45.                         ;;   
  46.                 esac   
  47.         fi   
  48. esac   
  49.   
  50. umask 022 #璁劇疆umask鍊鹼紝浣挎枃浠跺垱寤烘椂甯︽湁涓瀹氱殑緙虹渷鏉冮檺浣嶉泦   
  51. trap  2 3 #閲嶆柊璁劇疆鎹曟崏淇″彿<Ctrl-C>鍜孮UIT錛屽嵆鎭㈠淇″彿閲忕殑榛樿鎿嶄綔   
  52.   
  53. # add by jianghua   
  54.   
  55. export   
  56. PATH=$PATH:/usr/local/bin:/usr/local/mysql/bin:/opt/SunStudio_11/SUNWspro/bin:/usr/ccs/bin:   
  57.   
  58. /usr/sfw/bin:.   
  59. export HISTSIZE=1000  
  60. export HISTFILESIZE=1000  
  61. #   
  62. # Show Unix-Center.Net Welcome Message in Chinese   
  63. #   
  64. show_welcome_message  


鐢ㄦ埛鐨?HOME.profile
涓嬮潰鏄劇ず濡備綍鍦ㄥ懡浠ゆ彁紺虹涓緗富鏈哄悕錛?
Shell浠g爜
  1. -bash-3.00$ PS1='$PWD >'  
  2. /home/l/g/tomotoboy >export PS1  


stty鐢ㄤ簬璁劇疆緇堢鐗規(guī)с傝鏌ヨ鐜板湪鐨剆tty閫夐」錛屼嬌鐢╯tty -a
Shell浠g爜
  1. /home/l/g/tomotoboy >stty -a   
  2. speed 9600 baud;   
  3. rows = 25; columns = 82; ypixels = 0; xpixels = 0;   
  4. csdata ?   
  5. eucw 1:0:0:0, scrw 1:0:0:0  
  6. intr = ^c; quit = ^\; erase = ^?; kill = ^u;   
  7. eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>;   
  8. start = ^q; stop = ^s; susp = ^z; dsusp = ^y;   
  9. rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v;   
  10. -parenb -parodd cs8 -cstopb -hupcl cread -clocal -loblk -crtscts -crtsxoff -parext   
  11.   
  12. -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -iuclc   
  13. ixon -ixany -ixoff imaxbel   
  14. isig icanon -xcase echo echoe echok -echonl -noflsh   
  15. -tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten   
  16. opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3  


鍒涘緩.logout鏂囦歡
Shell浠g爜
  1. trap "$HOME /.logout " 0  
  2.   
  3. /home/l/g/tomotoboy >cat .logout   
  4. rm -f $HOME/*.txt   
  5. rm -f $HOME/*.tmp   
  6. rm -f $HOME/x*   
  7. echo "Bye...bye $LOGNAME"  


Gavin.lee 2009-11-29 11:59 鍙戣〃璇勮
]]>
shell鍚堝茍鍜屽垎鍓?/title><link>http://www.tkk7.com/jzone/articles/304080.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sun, 29 Nov 2009 03:57:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/304080.html</guid><description><![CDATA[<h3 class="type_original" title="鍘熷垱"><a ></a> </h3> <div id="cw468ou" class="blog_content">• 瀹炵敤鐨勫垎綾伙紙sort錛夋搷浣溿?<br /> sort鍛戒護鐨勪竴鑸牸寮忎負錛?<br /> sort -cmu -o output_file [other options] +pos1 +pos2 input_files <br /> 涓嬮潰綆瑕佷粙緇嶄竴涓媠 o r t鐨勫弬鏁幫細 <br /> -c 嫻嬭瘯鏂囦歡鏄惁宸茬粡鍒嗙被銆?<br /> -m 鍚堝茍涓や釜鍒嗙被鏂囦歡銆?<br /> -u 鍒犻櫎鎵鏈夊鍒惰銆?<br /> -o 瀛樺偍s o r t緇撴灉鐨勮緭鍑烘枃浠跺悕銆?<br /> 鍏朵粬閫夐」鏈夛細 <br /> -b 浣跨敤鍩熻繘琛屽垎綾繪椂錛屽拷鐣ョ涓涓┖鏍箋?<br /> -n 鎸囧畾鍒嗙被鏄煙涓婄殑鏁板瓧鍒嗙被銆?<br /> -t 鍩熷垎闅旂錛涚敤闈炵┖鏍兼垨t a b閿垎闅斿煙銆?<br /> -r 瀵瑰垎綾繪搴忔垨姣旇緝姹傞嗐?<br /> +n n涓哄煙鍙楓備嬌鐢ㄦ鍩熷彿寮濮嬪垎綾匯?<br /> n n涓哄煙鍙楓傚湪鍒嗙被姣旇緝鏃跺拷鐣ユ鍩燂紝涓鑸笌+ n涓璧蜂嬌鐢ㄣ?<br /> post1  浼犻掑埌m錛宯銆俶涓哄煙鍙鳳紝n涓哄紑濮嬪垎綾誨瓧絎︽暟錛涗緥濡?錛?鎰忓嵆浠ョ5鍩熷垎綾伙紝浠庣7 <br /> 涓瓧絎﹀紑濮嬨?<br /> 涓句緥錛?<br /> 鎸夌涓涓煙鍒嗙被 <br /> -bash-3.00$ sort -k0 sed.txt <br /> 鎵撳嵃鍒嗙被鍚庣殑鏈鍚庣涓琛?<br /> -bash-3.00$ sort -k0 sed.txt | tail -1 <br /> 鎵撳嵃鍒嗙被鍚庣殑絎竴琛?<br /> -bash-3.00$ sort -k0 sed.txt | head -1 <br /> awk浣跨敤sort杈撳嚭緇撴灉 <br /> -bash-3.00$ sort -k0 sed.txt | head -1 | awk '{if($1=="caodejun")print $1}' <br /> 灝嗕袱涓垎綾繪枃浠跺悎騫?<br /> -bash-3.00$ sort -m  sed.txt sort.txt <br /> 灝嗘枃浠跺悎騫跺墠錛屽畠浠繀欏誨凡琚垎綾匯傚悎騫舵枃浠跺彲鐢ㄤ簬浜嬪姟澶勭悊鍜屼換浣曠綾葷殑淇敼鎿嶄綔銆?<br /> 涓嬮潰榪欎釜渚嬪瓙錛屽洜涓哄繕浜嗘妸涓や釜瀹剁數(shù)鍚嶇О鍔犲叆鏂囦歡錛屽畠浠鏀懼湪涓涓崟鐙殑鏂囦歡閲岋紝鐜板湪灝?<br /> 涔嬪茍鍏ヤ竴涓枃浠躲傚垎綾葷殑鍚堝茍鏍煎紡涓?#8216;sort -m sorted_file1 sorted_file2’銆?<br /> <br /> 鍒犻櫎閲嶅琛?<br /> -bash-3.00$ sort -u sed.txt <br /> <br /> <br /> • uniq <br /> uniq鐢ㄦ潵浠庝竴涓枃鏈枃浠朵腑鍘婚櫎鎴栫姝㈤噸澶嶈銆備竴鑸瑄niq鍋囧畾鏂囦歡宸插垎綾伙紝騫朵笖緇撴灉姝g‘銆傛垜浠茍涓嶅己鍒惰姹傝繖鏍峰仛錛屽鏋滄効鎰忥紝鍙互浣跨敤浠諱綍闈炴帓搴忔枃鏈紝鐢氳嚦鏄棤瑙勫緥琛屻?<br /> -bash-3.00$ who | awk '{print $1} ' |uniq <br /> liuzk423 <br /> 605408211 <br /> shuzigui <br /> nefu_luyanshen <br /> waterlooz <br /> wsoangel <br /> tomotoboy <br /> xp55699312 <br /> zyy0904 <br /> caodejun <br /> duke1988 <br /> 605408211 <br /> nefu_luyanshen <br /> zyy0904 <br /> lonelysand <br /> <br /> <br /> 鏄劇ず涓嶅敮涓鐨勮 <br /> -bash-3.00$ who | awk '{print $1} ' |uniq -d <br /> <br /> -c鎵撳嵃姣忎竴閲嶅琛屽嚭鐜版鏁般?<br /> -bash-3.00$ who | awk '{print $1} ' |uniq -c <br />    1 liuzk423 <br />    1 605408211 <br />    1 shuzigui <br />    1 nefu_luyanshen <br />    1 waterlooz <br />    1 wsoangel <br />    1 tomotoboy <br />    1 xp55699312 <br />    1 zyy0904 <br />    1 caodejun <br />    1 duke1988 <br />    1 605408211 <br />    1 nefu_luyanshen <br />    1 zyy0904 <br />    1 lonelysand <br /> <span style="color: red">榪欓噷娌℃湁鎼炴噦nefu_luyanshen鏄庢槑閲嶅錛屽嵈鏄劇ず閲嶅琛屾暟鐩負1</span> <br /> <br /> 瀵圭壒瀹氬煙榪涜嫻嬭瘯錛屼嬌鐢?n鍙祴璇曚竴琛屼竴閮ㄥ垎鐨勫敮涓鎬с?<br /> -bash-3.00$ who | awk '{print $1} ' |uniq -n2 <br /> liuzk423 <br /> <br /> <br /> • join <br /> 灝嗕袱涓凡緇忓垎濂界被鐨勬枃浠惰繛鎺ュ湪涓璧峰搱銆備竴浜涚郴緇熻姹備嬌鐢╦oin鏃舵枃浠跺煙瑕佸皯浜?0錛屼負鍏鉤璧瘋錛屽鏋滃煙澶т簬20錛屽簲浣跨敤DBMS緋葷粺錛屽叾涓鑸牸寮忓涓嬶細 <br /> join [options] in_file1 in_file2 <br /> <br /> -bash-3.00$ cat sed.txt <br /> 605408211   pts/16       Jul 31 13:54   (218.0.1.42) <br /> caodejun   pts/44       Jul 31 14:16    (219.148.133.31) <br /> duke1988   pts/45       Jul 31 14:41    (218.104.163.66) <br /> liuzk423   pts/6        Jul 20 08:27    (219.245.104.240) <br /> nefu_luyanshen   pts/23       Jul 31 14:33      (218.25.6.142) <br /> nefu_luyanshen   pts/48       Jul 31 12:59      (218.25.6.142) <br /> shuzigui   pts/21       Jul 31 12:11    (121.35.248.193) <br /> tomotoboy   pts/41       Jul 31 13:31   (219.221.99.155) <br /> waterlooz   pts/25       Jul 31 08:48   (121.0.29.225) <br /> wsoangel   pts/35       Jul 31 13:40    (116.233.219.10) <br /> xp55699312   pts/42       Jul 31 14:12  (61.152.132.103) <br /> zyy0904    pts/43       Jul 31 13:53    (125.33.195.36) <br /> -bash-3.00$ cat sort.txt <br /> 605408211   pts/16       Jul 31 13:54   (218.0.1.42) <br /> caodejun   pts/44       Jul 31 14:16    (219.148.133.31) <br /> duke1988   pts/45       Jul 31 14:41    (218.104.163.66) <br /> -bash-3.00$ join sed.txt sort.txt <br /> 605408211 pts/16 Jul 31 13:54 (218.0.1.42) pts/16 Jul 31 13:54 (218.0.1.42) <br /> caodejun pts/44 Jul 31 14:16 (219.148.133.31) pts/44 Jul 31 14:16 (219.148.133.31) <br /> duke1988 pts/45 Jul 31 14:41 (218.104.163.66) pts/45 Jul 31 14:41 (218.104.163.66) <br /> <br /> 閫夋嫨鍖歸厤 <br /> -bash-3.00$ join -a1 -a2  sed.txt sort.txt <br /> 605408211 pts/16 Jul 31 13:54 (218.0.1.42) pts/16 Jul 31 13:54 (218.0.1.42) <br /> caodejun pts/44 Jul 31 14:16 (219.148.133.31) pts/44 Jul 31 14:16 (219.148.133.31) <br /> duke1988 pts/45 Jul 31 14:41 (218.104.163.66) pts/45 Jul 31 14:41 (218.104.163.66) <br /> liuzk423 pts/6 Jul 20 08:27 (219.245.104.240) <br /> nefu_luyanshen pts/23 Jul 31 14:33 (218.25.6.142) <br /> nefu_luyanshen pts/48 Jul 31 12:59 (218.25.6.142) <br /> shuzigui pts/21 Jul 31 12:11 (121.35.248.193) <br /> tomotoboy pts/41 Jul 31 13:31 (219.221.99.155) <br /> waterlooz pts/25 Jul 31 08:48 (121.0.29.225) <br /> wsoangel pts/35 Jul 31 13:40 (116.233.219.10) <br /> xp55699312 pts/42 Jul 31 14:12 (61.152.132.103) <br /> zyy0904 pts/43 Jul 31 13:53 (125.33.195.36) <br /> -bash-3.00$ join -o 1.1 2.2  sed.txt sort.txt <br /> 605408211 pts/16 <br /> caodejun pts/44 <br /> duke1988 pts/45 <br /> -bash-3.00$ join -o 1.1 2.2  2.3 sed.txt sort.txt <br /> 605408211 pts/16 Jul <br /> caodejun pts/44 Jul <br /> duke1988 pts/45 Jul <br /> <br /> <br /> • cut <br /> cut鐢ㄦ潵浠庢爣鍑嗚緭鍏ユ垨鏂囨湰鏂囦歡涓壀鍒囧垪鎴栧煙銆傚壀鍒囨枃鏈彲浠ュ皢涔嬬矘璐村埌涓涓枃鏈枃浠躲?<br /> 涓嬩竴鑺傚皢浠嬬粛綺樿創(chuàng)鐢ㄦ硶銆?<br /> cut涓鑸牸寮忎負錛?<br /> cut [options] file1 file2 <br /> 涓嬮潰浠嬬粛鍏跺彲鐢ㄩ夐」錛?<br /> -c list  鎸囧畾鍓垏瀛楃鏁般?<br /> -f field  鎸囧畾鍓垏鍩熸暟銆?<br /> -d   鎸囧畾涓庣┖鏍煎拰t a b閿笉鍚岀殑鍩熷垎闅旂銆?<br /> - c鐢ㄦ潵鎸囧畾鍓垏鑼冨洿錛屽涓嬫墍紺猴細 <br /> - c 1錛?-7  鍓垏絎?涓瓧絎︼紝鐒跺悗鏄5鍒扮7涓瓧絎︺?<br /> -c1-50  鍓垏鍓? 0涓瓧絎︺?<br /> -f 鏍煎紡涓? c鐩稿悓銆?<br /> -f 1錛?  鍓垏 絎?鍩燂紝絎?鍩熴?<br /> - f 1錛?0-12  鍓垏絎?鍩燂紝絎? 0鍩熷埌絎? 2鍩熴?<br /> <br /> -bash-3.00$ ps -ef | cut -c1-8 <br /> -bash-3.00$ ps -ef | cut -d: -f1 <br /> -bash-3.00$ ps -ef | cut -d: -f1錛? <br /> <br /> <br /> • paste <br /> cut鐢ㄦ潵浠庢枃鏈枃浠舵垨鏍囧噯杈撳嚭涓娊鍙栨暟鎹垪鎴栬呭煙錛岀劧鍚庡啀鐢?paste鍙互灝嗚繖浜涙暟鎹矘璐?<br /> 璧鋒潵褰㈡垚鐩稿叧鏂囦歡銆傜矘璐翠袱涓笉鍚屾潵婧愮殑鏁版嵁鏃訛紝棣栧厛闇灝嗗叾鍒嗙被錛屽茍紜繚涓や釜鏂囦歡琛屾暟鐩?<br /> 鍚屻?<br /> paste灝嗘寜琛屽皢涓嶅悓鏂囦歡琛屼俊鎭斁鍦ㄤ竴琛屻傜己鐪佹儏鍐典笅錛?paste榪炴帴鏃訛紝鐢ㄧ┖鏍兼垨tab閿垎闅?<br /> 鏂拌涓笉鍚屾枃鏈紝闄ら潪鎸囧畾- d閫夐」錛屽畠?yōu)畣鎴愪负鍩熷垎闅斀W︺俻aste鏍煎紡涓猴細 <br /> paste -d -s -file1 file2 <br /> 閫夐」鍚箟濡備笅錛?<br /> -d   鎸囧畾涓嶅悓浜庣┖鏍兼垨t a b閿殑鍩熷垎闅旂銆備緥濡傜敤@鍒嗛殧鍩燂紝浣跨敤- d @銆?<br /> -s   灝嗘瘡涓枃浠跺悎騫舵垚琛岃屼笉鏄寜琛岀矘璐淬?<br />             - 浣跨敤鏍囧噯杈撳叆銆備緥濡俵s -l |paste 錛屾剰鍗沖彧鍦ㄤ竴鍒椾笂鏄劇ず杈撳嚭銆?<br /> <br /> <br /> • split <br /> split鐢ㄦ潵灝嗗ぇ鏂囦歡鍒嗗壊鎴愬皬鏂囦歡銆傛湁鏃舵枃浠惰秺鏉ヨ秺澶э紝浼犻佽繖浜涙枃浠舵椂錛岄鍏堝皢鍏跺垎鍓插彲 <br /> 鑳芥洿瀹規(guī)槗銆備嬌鐢╲ i鎴栧叾浠栧伐鍏瘋濡俿ort鏃訛紝濡傛灉鏂囦歡瀵逛簬宸ヤ綔緙撳啿鍖哄お澶э紝涔熶細瀛樺湪涓浜涢棶棰樸?<br /> 鍥犳鏈夋椂娌℃湁閫夋嫨浣欏湴錛屽繀欏誨皢鏂囦歡鍒嗗壊鎴愬皬鐨勭鐗囥?<br /> split鍛戒護涓鑸牸寮忥細 <br /> split -output_file-size input-filename output-filename <br /> 榪欓噷output_file-size 鎸囩殑鏄枃鏈枃浠惰鍒嗗壊鐨勮鏁般?<br /> -bash-3.00$ ps -ef |split -10 <br /> -bash-3.00$ ls <br /> <table class="bbcode"> <tbody> <tr> <td>a.out            greeting.sh      main.c           sort.txt         xac              xai              xao <tr> <td> <tr> <td>append.sed       grepgrepstrings  nohup.out        test             xad              xaj              xap <tr> <td> <tr> <td>change.sed       grepstr          readme.sh        test.sh          xae              xak              xaq <tr> <td> <tr> <td>core.log         hello            seawolf          user.online      xaf              xal              xar <tr> <td> <tr> <td>factorial        hello.cpp        sed.out          xaa              xag              xam <tr> <td> <tr> <td>factorial.c      main             sed.txt          xab              xah              xan</td> </tr> </tbody> </table> </div> <img src ="http://www.tkk7.com/jzone/aggbug/304080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-11-29 11:57 <a href="http://www.tkk7.com/jzone/articles/304080.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://52xingai.com" target="_blank">精品亚洲成在人线AV无码</a>| <a href="http://www-175345.com" target="_blank">欧美亚洲国产SUV</a>| <a href="http://shandonghj.com" target="_blank">人人公开免费超级碰碰碰视频</a>| <a href="http://ksp33.com" target="_blank">久久99国产乱子伦精品免费</a>| <a href="http://788qj.com" target="_blank">亚洲人成网站在线观看青青</a>| <a href="http://941sese.com" target="_blank">亚洲伊人久久大香线蕉苏妲己</a>| <a href="http://jt4f.com" target="_blank">亚洲αⅴ无码乱码在线观看性色</a>| <a href="http://ldcatv.com" target="_blank">无码日韩精品一区二区免费暖暖 </a>| <a href="http://trgod.com" target="_blank">亚洲人成无码网站久久99热国产</a>| <a href="http://tiantiantegou.com" target="_blank">亚洲H在线播放在线观看H</a>| <a href="http://www-533999.com" target="_blank">久章草在线精品视频免费观看</a>| <a href="http://ljdst.com" target="_blank">久久亚洲中文字幕精品一区</a>| <a href="http://s8sb.com" target="_blank">黄色网址大全免费</a>| <a href="http://chowngroup.com" target="_blank">日韩高清在线免费看</a>| <a href="http://tlyyt.com" target="_blank">亚洲午夜一区二区三区</a>| <a href="http://jcmy5188.com" target="_blank">国产成人精品免费视频动漫</a>| <a href="http://513109.com" target="_blank">色播亚洲视频在线观看</a>| <a href="http://tuopumao.com" target="_blank">免费一级不卡毛片</a>| <a href="http://xzdlgp.com" target="_blank">国产亚洲精AA在线观看SEE</a>| <a href="http://sxwlhg.com" target="_blank">国产日韩在线视频免费播放</a>| <a href="http://zcrencai.com" target="_blank">亚洲乱码中文字幕综合234</a>| <a href="http://9qwx.com" target="_blank">特级毛片全部免费播放a一级</a>| <a href="http://449892.com" target="_blank">国产成人免费A在线视频</a>| <a href="http://508009.com" target="_blank">亚洲AV日韩AV无码污污网站</a>| <a href="http://imfever.com" target="_blank">四虎影视免费在线</a>| <a href="http://0359puju.com" target="_blank">亚洲精品无码成人片久久不卡</a>| <a href="http://hcdigi.com" target="_blank">操美女视频免费网站</a>| <a href="http://tha2008.com" target="_blank">亚洲AV成人影视在线观看</a>| <a href="http://6ork.com" target="_blank">www.999精品视频观看免费</a>| <a href="http://wangdei.com" target="_blank">亚洲伊人久久大香线焦</a>| <a href="http://hh5151.com" target="_blank">99久久99这里只有免费费精品</a>| <a href="http://lyczyb.com" target="_blank">亚洲小说图片视频</a>| <a href="http://sdhuamo.com" target="_blank">日韩免费一区二区三区在线</a>| <a href="http://littlevv.com" target="_blank">亚洲乱码一区av春药高潮</a>| <a href="http://tmg-beelen.com" target="_blank">美女网站免费福利视频</a>| <a href="http://bjbf99.com" target="_blank">亚洲欧洲日韩极速播放</a>| <a href="http://9981tv.com" target="_blank">欧洲精品免费一区二区三区</a>| <a href="http://5g5t.com" target="_blank">在线播放亚洲精品</a>| <a href="http://56aaaa.com" target="_blank">亚洲乱码中文字幕手机在线 </a>| <a href="http://roocos.com" target="_blank">亚洲人成免费电影</a>| <a href="http://www-715111.com" target="_blank">亚洲午夜久久久精品电影院</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>