linuxѧϰ±Ê¼Ç

-d is not an option $

Óï¾ä¼ì²éÿ¸ö²ÎÊýµÄÓÐЧѡÏî¡£µ±ÓÐÒ»¸ö±»·¢ÏÖʱ£¬Êʵ±µÄÃüÁÔÚÓï¾äÖÐÔËÐС£

$ ./test15 -d -c -a -d is not an option Found the -c option Found the -a option $

Separating options from parameters£¨´Ó²ÎÊýÖзÖÀëÑ¡Ï ͨ³£Çé¿öÏ£¬Äã»áҪͬʱʹÓýű¾µÄÑ¡ÏîºÍ²ÎÊý¡£×öÕâ¸öµÄ±ê×¼·½·¨ÊÇÓÃÒ»¸öÌØÊâµÄ×Ö·û´úÂëÀ´·Ö¸ôÁ½¸ö£¬µ±Ñ¡ÏîÍê³Éºó£¬Õý³£²ÎÊý¿ªÊ¼Ê±£¬»á¸æË߽ű¾¡£

ÔÚLINUXÖУ¬Õâ¸öÌØÊâµÄ×Ö·ûÊÇ£¨--£©¡£½Å±¾²ÉÓã¨--£©±íʾѡÏîÁбíµÄ½áÊø¡£¿´µ½ÁË(--)£¬ÄãµÄ½Å±¾¿ÉÒÔ°ÑÊ£ÓàµÄÃüÁîÐвÎÊý×÷Ϊ²ÎÊýÀ´´¦Àí£¬¶ø²»ÊÇÑ¡Ïî¡£

Òª¼ì²é£¨--£©£¬ÄãÐèÒª×öµÄ¾ÍÊÇÌí¼ÓÁíÒ»¸öÓï¾ä£º

$ cat test16 #!/bin/bash

# extracting options and parameters while [ -n \do

½á¹û±íÃ÷£¬½Å±¾»á°ÑËùÓеIJÎÊý¿´×÷Ñ¡Ïî¡£case \

-a) echo \-b) echo \-c) echo \--) shift break ;;

*) echo \esac shift done count=1 for param in $@ do

echo \count=$[ $count + 1 ] done $

$ ./test16 -c -a -b -- test1 test2 test3 Found the -c option Found the -a option Found the -b option

Parameter #1: test1 Parameter #2: test2 Parameter #3: test3 $

µ±½Å±¾µ½´ï£¨--£©Ê±£¬Í£Ö¹´¦ÀíÑ¡Ï²¢¼Ù¶¨ÈκÎÊ£ÓàµÄ²ÎÊý¶¼ÊÇÃüÁîÐвÎÊý¡£

Processing options with values£¨´¦ÀíÑ¡ÏîµÄÖµ£©

һЩѡÏîÐèÒªÒ»¸ö¸½¼ÓµÄ²ÎÊýÖµ¡£ÔÚÕâЩÇé¿öÏ£¬ÃüÁîÐп´ÆðÀ´ÏñÕâÑù£º

$ ./testing -a test1 -b -c -d test2

µ±ÄãµÄÃüÁîÐÐÑ¡ÏîÐèÒªÒ»¸ö¸½¼ÓµÄ²ÎÊý£¬ÄãµÄ½Å±¾±ØÐëÄܹ»¼ì²âµ½¡£ÏÂÃæÊÇÒ»¸öÀý×Ó£º

$ cat test17 #!/bin/bash

# extracting command line options and values while [ -n \do

case \

-a) echo \-b) param=\

echo \the -b option, with parameter value $param\shift 2;;

-c) echo \--) shift break;;

*) echo \esac shift done count=1

for param in \do

echo \count=$[ $count + 1 ] done

$ ./test17 -a -b test1 -d Found the -a option

Found the -b option, with parameter value test1 -d is not an option $

ÔÚÕâ¸öÀý×ÓÖУ¬°¸ÀýÓï¾ä¶¨ÒåÁËËü´¦ÀíµÄÈý¸öÑ¡Ïî¡£-bÑ¡ÏÐèÒªÒ»¸ö¸½¼ÓµÄ²ÎÊýÖµ¡£ÒòΪ±»´¦ÀíµÄ²ÎÊýÊÇ1£¬ÄãÖªµÀ£¬¶îÍâµÄ²ÎÊýֵλÓÚ2£¨ÒòΪËùÓеIJÎÊý¶¼ÔÚ´¦ÀíºóÆ«ÒÆ£©¡£Ö»Ðè´Ó2±äÁ¿ÖÐÌáÈ¡²ÎÊýÖµ¡£µ±È»£¬ÒòΪÎÒÃÇʹÓÃÁËÕâ¸öÑ¡ÏîµÄË«²ÎÊýµã£¬Äú»¹ÐèÒªÉèÖÃÒÆ

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)