一些初学者朋友对于shift命令感到非常的困惑,抱怨网上的一些shift命令教程很难理解。为了解决这个问题,于是我就写了一下这个
“超生游击队”教程以供初学者朋友参考。
言归正传,比如我老爸有10个儿子,我英雄是第10个。
第一步:
我们现在用一个另类的办法输出10个儿子的名字,将如下代码保存为hero.bat。
@echo off
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
echo %10
pause
如何运行呢?我们可以另写一个bat,内容是:call hero.bat 老大 老二 老三 …… 英雄
也就是调用hero.bat并共带10个参数!
能正确运行吗?不能,很遗憾,因为根本没有%10。
第二步:
在上一步中没有输出我英雄的大名,那难道我英雄就不是我老爸的儿子吗!我得想个办法把我的名字也输出来。
好了,借助shift命令就可以达到。我们把hero.bat中的代码改一下。
@echo off
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
shift
echo %9
pause
终于我的大名输出了。可是英雄明明是第10个参数呀,怎么现在变成第9个了?
这个就是shift的功能.
也就是,执行shift命令以后,原来的%9变成了%8,原来的%8变成了%7,原来的%7变成了%6……而原来的%1变成了%0,此时原来的%0没了。
也就是说后面的参数依次冲掉了前面的参数,而为了输出我的名字,最终牺牲了%0。
第三步:
我老爸又认了4个干儿子,名字分别为a,b,c,d
到此,我老爸有多了4个干儿子。共14个儿子。
在调用hero.bat时又多了4个参数,则运行hero.bat时有:call hero.bat 老大 老二 老三 …… 英雄 a b c d
(注意:要把省略号换成名字。)
此时,hero.bat的代码如下:(最容易理解的方法)
@echo off
echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
shift
echo %9
::现在的%9是英雄
shift
echo %9
::现在的%9是a
shift
echo %9
::现在的%9是b
shift
echo %9
::现在的%9是c
shift
echo %9
::现在的%9是d
pause