shell½Å±¾1
1.1 shell½éÉÜ
Shell ±¾ÉíÊÇÒ»¸öÓà C ÓïÑÔ±àдµÄ³ÌÐò£¬ËüÊÇÓû§Ê¹Óà Unix/Linux µÄÇÅÁº£¬Óû§µÄ´ó²¿·Ö¹¤×÷¶¼ÊÇͨ¹ý Shell Íê³ÉµÄ¡£Shell ¼ÈÊÇÒ»ÖÖÃüÁîÓïÑÔ£¬ÓÖÊÇÒ»ÖÖ³ÌÐòÉè¼ÆÓïÑÔ¡£×÷ΪÃüÁîÓïÑÔ£¬Ëü½»»¥Ê½µØ½âÊͺÍÖ´ÐÐÓû§ÊäÈëµÄÃüÁ×÷Ϊ³ÌÐòÉè¼ÆÓïÑÔ£¬Ëü¶¨ÒåÁ˸÷ÖÖ±äÁ¿ºÍ²ÎÊý£¬²¢ÌṩÁËÐí¶àÔڸ߼¶ÓïÑÔÖвžßÓеĿØÖƽṹ£¬°üÀ¨Ñ»·ºÍ·ÖÖ§¡£
Shell ÓÐÁ½ÖÖÖ´ÐÐÃüÁîµÄ·½Ê½£º
½»»¥Ê½£¨Interactive£©£º½âÊÍÖ´ÐÐÓû§µÄÃüÁÓû§ÊäÈëÒ»ÌõÃüÁShell ¾Í½âÊÍÖ´ÐÐÒ»Ìõ¡£
Åú´¦Àí£¨Batch£©£ºÓû§ÊÂÏÈдһ¸ö Shell ½Å±¾(Script)£¬ÆäÖÐÓкܶàÌõÃüÁÈà Shell Ò»´Î
°ÑÕâЩÃüÁîÖ´ÐÐÍ꣬¶ø²»±ØÒ»ÌõÒ»ÌõµØÇÃÃüÁî
¼¸ÖÖ³£¼ûµÄshell£ºbash£¬sh£¬csh£¬ksh£¬dash£¬tcshµÈµÈ£¬ÎÒÃÇÕâ¸öºìñ6.3ϵͳ£¬Ä¬ÈϵÄshellÊÇbash
ÒòΪĬÈϵÄshellÊÇbash£¬ÄÇôÕâÀïµÄ½Ì³ÌÊÇ»ùÓÚbashµÄ¡£
shellÊǽâÊÍÐÍÓïÑÔ£¬±àдÍê´úÂ룬²»ÐèÒª±àÒëÒ²¿ÉÒÔÔËÐУ¬CÓïÑÔÖ®ÀàµÄ±à³ÌÓïÑÔ£¬ÊDZàÒëÐÍÓïÑÔ£¬±àдÍê´úÂ룬ÊÇÒª½øÐбàÒë²Å¿ÉÒÔÔËÐеÄ
Ôڽű¾ÖУ¬Ìí¼Ó×¢ÊÍ£¬ÊÇÓÃ#£¬Ã¿Ò»Ðдú±íÒ»ÌõÃüÁî»òÕßÒ»ÌõÓï¾ä£¬ÊDz»ÐèÒªÓ÷ֺÅÀ´Çø·ÖÿһÌõÓï¾äµÄ£¬
1.2 ÔËÐнű¾
1.2.1 µÚÒ»¸ö½Å±¾test.sh
#!/bin/bash
echo hello linux
|
ÔËÐнá¹û£ºÔÚÖÕ¶ËÖÐÊä³öÁËhello linux×Ö·û´®
µÚÒ»ÐÐ #!/bin/bashµÄÒâ˼ÊÇ˵Ã÷£¬Õâ¸ö½Å±¾£¬ÊÇ»ùÓÚbash½âÊÍÆ÷µÄ
#!ÊÇÔ¼¶¨Ë׳ɵÄÒâ˼£¬¸æËßϵͳ£¬ÒªÊ¹ÓÃÄĸö½âÊÍÆ÷£¬ºó±ßµÄ/bin/bashÊÇÖ¸Ã÷½âÊÍÆ÷ÔÚÄĸö·¾¶ÏÂ
echo¾ÍÊÇÍùÖÕ¶ËÊä³ö£¬ºóÃæ¾ÍÊÇÊä³öµÄÄÚÈÝ
Ò»°ã¶øÑÔ£¬×îºó½Å±¾µÄºó׺Ҫ¼ÓÉÏ.sh£¬ÒÔ·½±ã·Ö±æÕâÊÇÒ»¸ö½Å±¾
1.2.2 ÔËÐÐÒ»¸ö½Å±¾µÄ·½Ê½
1) Ö´ÐÐshell½âÊÍÆ÷ÃüÁbash test.sh »òÕß sh test.sh
ÕâÖÖ·½Ê½£¬²»ÐèÒª¸øÓètest.shȨÏÞ£¬¿ÉÒÔÖ±½ÓÔËÐÐ
ҲûÓбØҪдÕâÒ»ÐÐ #!/bin/bash
2) Ö±½ÓʹÓÃ./µÄÔËÐз½Ê½£º./test.sh
ÕâÖÖ·½Ê½£¬ÔËÐÐtest.sh֮ǰ£¬ÐèÒª¸øÓètest.shÖ´ÐÐȨÏ޲ſÉÒÔ
ÓбØҪдÉÏ #!/bin/bash£¬µ«ÊÇÈç¹ûĬÈϽâÊÍÆ÷ÊÇbash£¬ÄÇôÕâÐÐÒª¿ÉÒÔ²»Ð´
Èç¹ûϵͳûÓÐĬÈϽâÊÍÆ÷£¬ÄÇôÕâÐÐÊDZØÐëдÉϵÄ
1.3 shell±äÁ¿¶¨Ò壬ɾ³ý±äÁ¿£¬Ö»¶Á±äÁ¿£¬±äÁ¿ÀàÐÍ
1.3.1 ±äÁ¿µÄ¶¨Òå
±äÁ¿ÊDz»ÐèÒªÀàËÆCÓïÑÔÄÇÖÖint charÕâÑùµÄÀàÐÍ£¬shellµÄ±äÁ¿£¬Ö»ÓÐÁ½ÖÖ£ºÊý×ÖºÍ×Ö·û´®
ʾÀý
#!/bin/bash
aa=123 echo hello linux echo $aa echo ${aa} echo ¡°$aa¡± echo ¡°${aa}¡± echo aa
|
Êä³ö½á¹û£º
[xyd@local ×ÀÃæ]$ ./test.sh
123
123
123
123
aa
ShellÖбäÁ¿µÄʹÓòÉÓà $xxx µÄÐÎʽ
×¢Ò⣬±äÁ¿ÃûºÍµÈºÅÖ®¼ä²»ÄÜÓпոñ£¬Õâ¿ÉÄܺÍÄãÊìϤµÄËùÓбà³ÌÓïÑÔ¶¼²»Ò»Ñù¡£Í¬Ê±£¬±äÁ¿ÃûµÄÃüÃûÐë×ñÑÈçϹæÔò£º
Ê׸ö×Ö·û±ØÐëΪ×Öĸ£¨a-z£¬A-Z£©¡£
Öм䲻ÄÜÓпոñ£¬¿ÉÒÔʹÓÃÏ»®Ïߣ¨_£©¡£
²»ÄÜʹÓñêµã·ûºÅ¡£
²»ÄÜʹÓÃbashÀïµÄ¹Ø¼ü×Ö£¨¿ÉÓÃhelpÃüÁî²é¿´±£Áô¹Ø¼ü×Ö£©¡£
ÍƼö¸øËùÓбäÁ¿¼ÓÉÏ»¨À¨ºÅ£¬ÕâÊǸöºÃµÄ±à³ÌÏ°¹ß¡£»¨À¨ºÅµÄЧ¹ûÊÇÖ¸Ã÷±äÁ¿ÃûµÄ±ß½ç
ÒѶ¨ÒåµÄ±äÁ¿£¬¿ÉÒÔ±»ÖØж¨Ò壬×îÖÕ½á¹û£¬ÒÔ×îºóÒ»´Î¶¨ÒåΪ׼
±äÁ¿ÒýÓã¬Ö»ÐèÒªÔÚ±äÁ¿Ç°¼ÓÉÏ$·ûºÅ£¬±ØÐëÊÇÒѾ¶¨Òå³öÀ´µÄ±äÁ¿
1.3.2 ɾ³ý±äÁ¿
#!/bin/bash
aa=123 echo hello linux echo $aa echo ${aa} unset aa echo ¡°$aa¡± echo ¡°${aa}¡± echo aa
|
ɾ³ý±äÁ¿£¬Ê¹ÓÃunset+ ±äÁ¿Ãû£¬×¢Ò⣬ÕâÀïµÄ±äÁ¿Ãû£¬²»ÐèÒªÔÚ¿ªÍ·¼ÓÉÏ$£ºunset aa¼´¿É
1.3.3 Ö»¶Á±äÁ¿
#!/bin/bash
aa=123 readonly aa aa=456 unset aa echo hello linux echo $aa echo ${aa} echo ¡°$aa¡± echo ¡°${aa}¡± echo aa
|
[xyd@local ×ÀÃæ]$ ./test.sh
./test.sh: line 5: aa: readonly variable
hello linux
123
123
123
123
aa
Êä³ö½á¹ûÈçÉÏ£¬¿ÉÒÔ¿´µÃ³öÀ´£¬±»readonlyÐÞÊÎÖ®ºó£¬²»ÄÜÔÙ¶ÔÕâ¸ö±äÁ¿½øÐж¨Ò壬²»ÄÜËæÒâ¸ü¸ÄÕâ¸ö±äÁ¿µÄÖµ
±»readonlyÐÞÊεıäÁ¿£¬ÊÇûÓа취±»unsetɾ³ýµÄ
1.3.4 ±äÁ¿ÀàÐÍ
ÔËÐÐshellʱ£¬»áͬʱ´æÔÚÈýÖÖ±äÁ¿£º
1) ¾Ö²¿±äÁ¿ ¾Ö²¿±äÁ¿Ôڽű¾»òÃüÁîÖж¨Ò壬½öÔÚµ±Ç°shellʵÀýÖÐÓÐЧ£¬ÆäËûshellÆô¶¯µÄ³ÌÐò²»ÄÜ·ÃÎʾֲ¿±äÁ¿¡£
2) »·¾³±äÁ¿ ËùÓеijÌÐò£¬°üÀ¨shellÆô¶¯µÄ³ÌÐò£¬¶¼ÄÜ·ÃÎÊ»·¾³±äÁ¿£¬ÓÐЩ³ÌÐòÐèÒª»·¾³±äÁ¿À´±£Ö¤ÆäÕý³£ÔËÐС£±ØÒªµÄʱºòshell½Å±¾Ò²¿ÉÒÔ¶¨Òå»·¾³±äÁ¿¡£
3) shell±äÁ¿ shell±äÁ¿ÊÇÓÉshell³ÌÐòÉèÖõÄÌØÊâ±äÁ¿¡£shell±äÁ¿ÖÐÓÐÒ»²¿·ÖÊÇ»·¾³±äÁ¿£¬ÓÐÒ»²¿·ÖÊǾֲ¿±äÁ¿£¬ÕâЩ±äÁ¿±£Ö¤ÁËshellµÄÕý³£ÔËÐС£
1.3.5 Shell ÌØÊâ±äÁ¿£º $n, $#, $*, $@, $?,$$ºÍÃüÁîÐвÎÊý
Ç°ÃæÒѾ½²µ½£¬±äÁ¿ÃûÖ»ÄÜ°üº¬Êý×Ö¡¢×ÖĸºÍÏ»®Ïߣ¬ÒòΪijЩ°üº¬ÆäËû×Ö·ûµÄ±äÁ¿ÓÐÌØÊâ
º¬Ò壬ÕâÑùµÄ±äÁ¿±»³ÆΪÌØÊâ±äÁ¿¡£
$n£º´ú±í´«²Î½øÀ´µÄÊý¾Ý£¬ÆäÖÐ$0ÊÇ´ú±í½Å±¾µÄÎļþÃû£¬$1£¬$2£¬$3µÈÊÇ´ú±íÍⲿµÚÒ»¸ö£¬µÚ¶þ¸öµÚÈý¸ö´«²Î
$#£º´ú±í´«²Î¸öÊý£¬ÕâÀï²»°ü»»ÎļþÃû±¾Éí
$*£ºËùÓеĴ«²Î»òÕߺ¯Êý´«µÝ¸ø½Å±¾µÄ²ÎÊý¸öÊý
$@£ºËùÓеĴ«²Î»òÕߺ¯Êý´«µÝ¸ø½Å±¾µÄ²ÎÊý¸öÊý
$£¿£ºÉÏÒ»¸öÃüÁîµÄÍ˳ö״̬£¬»òÕߺ¯ÊýµÄ·µ»ØÖµ
$$£ºµ±Ç°½Å±¾µÄ½ø³ÌID