ºìÁªLinuxÃÅ»§
Linux°ïÖú

shift ÃüÁîµÄʹÓÃ

·¢²¼Ê±¼ä:2006-08-14 10:37:09À´Ô´:ºìÁª×÷Õß:iLove.Rain
¡¡¡¡ÎÒÃÇÖªµÀ£¬¶ÔÓÚλÖñäÁ¿»òÃüÁîÐвÎÊý£¬Æä¸öÊý±ØÐëÊÇÈ·¶¨µÄ£¬»òÕßµ±Shell³ÌÐò²»ÖªµÀÆä¸öÊýʱ£¬¿ÉÒÔ°ÑËùÓвÎÊýÒ»Æð¸³Öµ¸ø±äÁ¿$*¡£ÈôÓû§ÒªÇóShellÔÚ²»ÖªµÀλÖñäÁ¿¸öÊýµÄÇé¿öÏ£¬»¹ÄÜÖð¸öµÄ°Ñ²ÎÊýÒ»Ò»´¦Àí£¬Ò²¾ÍÊÇÔÚ$1ºóΪ$2,ÔÚ$2ºóÃæÎª$3µÈ¡£ÔÚ shiftÃüÁîÖ´ÐÐǰ±äÁ¿$1µÄÖµÔÚshiftÃüÁîÖ´Ðкó¾Í²»¿ÉÓÃÁË¡£

ʾÀýÈçÏ£º

#²âÊÔshiftÃüÁî(x_shift.sh)
until [ $# -eq 0 ]
do
echo "µÚÒ»¸ö²ÎÊýΪ: $1 ²ÎÊý¸öÊýΪ: $#"
shift
done
Ö´ÐÐÒÔÉϳÌÐòx_shift.sh£º
$./x_shift.sh 1 2 3 4

½á¹ûÏÔʾÈçÏ£º

µÚÒ»¸ö²ÎÊýΪ: 1 ²ÎÊý¸öÊýΪ: 4
µÚÒ»¸ö²ÎÊýΪ: 2 ²ÎÊý¸öÊýΪ: 3
µÚÒ»¸ö²ÎÊýΪ: 3 ²ÎÊý¸öÊýΪ: 2
µÚÒ»¸ö²ÎÊýΪ: 4 ²ÎÊý¸öÊýΪ: 1

´ÓÉÏ¿ÉÖªshiftÃüÁîÿִÐÐÒ»´Î£¬±äÁ¿µÄ¸öÊý($#)¼õÒ»£¬¶ø±äÁ¿ÖµÌáǰһ룬ÏÂÃæ´úÂëÓÃuntilºÍshiftÃüÁî¼ÆËãËùÓÐÃüÁîÐвÎÊýµÄºÍ¡£

#shiftÉϵµÃüÁîµÄÓ¦ÓÃ(x_shift2.sh)
if [ $# -eq 0 ]
then
echo "Usage:x_shift2.sh ²ÎÊý"
exit 1
fi
sum=0
until [ $# -eq 0 ]
do
sum=`expr $sum + $1`
shift
done
echo "sum is: $sum"

Ö´ÐÐÉÏÊö³ÌÐò:

$x_shift2.sh 10 20 15

ÆäÏÔʾ½á¹ûΪ£º

45

¡¡¡¡shiftÃüÁÓÐÁíÍâÒ»¸öÖØÒªÓÃ;,Bsh¶¨ÒåÁË9¸öλÖñäÁ¿£¬´Ó$1µ½$9,Õâ²¢²»Òâζ×ÅÓû§ÔÚÃüÁîÐÐÖ»ÄÜʹÓÃ9¸ö²ÎÊý£¬½èÖúshiftÃüÁî¿ÉÒÔ·ÃÎʶàÓÚ9¸öµÄ²ÎÊý¡£

¡¡¡¡ShiftÃüÁîÒ»´ÎÒÆ¶¯²ÎÊýµÄ¸öÊýÓÉÆäËù´øµÄ²ÎÊýÖ¸¶¨¡£ÀýÈçµ±shell³ÌÐò´¦ÀíÍêǰ¾Å¸öÃüÁîÐвÎÊýºó£¬¿ÉÒÔʹÓÃshift 9ÃüÁî°Ñ$10ÒÆµ½$1¡£

¡¡¡¡ÔÚÊìϤÁËshiftÃüÁîºó£¬ÎÒÃÇÒ»Æð¿´¿´£¬Bsh³ÌÐòÖзdz£ÓÐÓõÄforÑ­»·Óï¾ä£¬ÕâÖÖÑ­»·Í¬ÉÏÃæËµµÄwhileºÍuntilÑ­»·²»Í¬£¬forÓï¾äÖеÄÑ­»·ÊÇ·ñÖ´Ðв¢²»ÓÉij¸öÌõ¼þµÄÕæºÍ¼ÙÀ´¾ö¶¨£¬¾ö¶¨forÑ­»·ÊÇ·ñ¼ÌÐøµÄÌõ¼þÊDzÎÊý±íÖÐÊÇ·ñ»¹ÓÐδ´¦ÀíµÄ²ÎÊý¡£


µ÷ÊÔshell³ÌÐò

¡¡¡¡Óû§¸Õ±àдÍêShell³ÌÐòÖУ¬²»¿É±ÜÃâµÄ»áÓдíÎó£¬ÕâʱÎÒÃÇ¿ÉÒÔÀûÓÃBshÖÐÌṩµÄ¸ú×ÙÑ¡Ï¸ÃÑ¡Ïî»áÏÔʾ¸Õ¸ÕÖ´ÐеÄÃüÁî¼°²ÎÊý¡£Óû§¿ÉÒÔͨ¹ýsetÃüÁî´ò¿ª-xÑ¡Ïî»òÔÚÆô¶¯ShellʹÓÃ-xÑ¡ÏShellÉèÖóɸú×Ùģʽ¡£ÀýÈçÓÐÏÂÃæ´úÂëice_tx:

¡¡¡¡if [ $# -eq 0 ]
¡¡¡¡then
¡¡¡¡¡¡¡¡echo "usage:sumints integer list"
¡¡¡¡¡¡¡¡exit 1
¡¡¡¡fi
¡¡¡¡sum=0
¡¡¡¡until [ $# -eq 0 ]
¡¡¡¡do
¡¡¡¡¡¡¡¡sum='expr $sum + $1'
¡¡¡¡¡¡¡¡shift
¡¡¡¡done
¡¡¡¡echo $sum

¡¡¡¡ÎÒÃÇÓøú×ÙģʽÔËÐÐ:

¡¡¡¡$sh -x ice_tx 2 3 4
¡¡¡¡½á¹ûÏÔʾ:
¡¡¡¡+[ 3 -eq 0 ]
¡¡¡¡+sum=0
¡¡¡¡+[ 3 -eq 0 ]
¡¡¡¡+expr 0+2
¡¡¡¡+sum=2
¡¡¡¡+shift
¡¡¡¡+[ 2 -eq 0 ]
¡¡¡¡+expr 2+3
¡¡¡¡+sum=5
¡¡¡¡+shift
¡¡¡¡+[ 1 -eq 0 ]
¡¡¡¡+expr 5+4
¡¡¡¡+sum=9
¡¡¡¡+[ 0 -eq 0 ]
¡¡¡¡+echo 9
¡¡¡¡9

¡¡¡¡´ÓÉÏÃæ¿ÉÒÔ¿´³ö£¬¸ú×ÙģʽÏÂShellÏÔʾִÐеÄÿһÌõÃüÁîÒÔ¼°¸ÃÃüÁîʹÓõıäÁ¿Ìæ»»ºóµÄ²ÎÊýÖµ¡£Ò»Ð©¿ØÖÆ×ÖÈçif¡¢then¡¢untilµÈûÏÔʾ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 3 ÌõÆÀÂÛ

  1. hdongmiao ÓÚ 2012-01-30 20:26:04·¢±í:

    ѧϰÏÂÏÈ

  2. chenyangmvp ÓÚ 2012-01-30 17:59:38·¢±í:

    ÖÕÓÚÄܽ«Ñ§µ½µÄÕâЩÓõ½¹¤×÷ÖÐÈ¥ÁË

  3. aanchun1989 ÓÚ 2009-08-19 21:21:41·¢±í:

    ºÜºÃ£¬Ñ§Ï°ÁË