WindowsBatch与LinuxShell比较[batchfile之label与shell之函数]
batch file的label与shell的函数比较
1 batch file
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
@echo
off

echo
调用前

echo
调用子过程
call
:sub

echo
调用后
Goto
end

:sub
echo
子过程调用中
goto
:eof

:end
echo
退出
Pause
exit
注意:
@echo
off

echo
调用前 
echo
调用子过程
call
:sub

echo
调用后
Goto
end

:sub
echo
子过程调用中
goto
:eof

:end
echo
退出
Pause
exit
label用:来定义,相当于程序块,也可以认为是函数,使用goto跳转到label。
如果使用call来调用label且label前仍有:,此时此label实际上被转化为子batch file。此时lable中的goto :eof仅表示推出子batch file,不是退出整个batch file。
2 shell file
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
#
!
/
bin
/
bash
function quit {
exit
}
function e {
echo
$
1
}
e Hello
e World
quit
echo
foo


function afunc
{
echo
"
alice: $*
"
echo
"
$0: $1 $2 $3 $4
"
echo
"
$# arguments
"

local var1
var1
=
"
in function
"
echo
var1:
$
var1
return
$
?
}

var1
=
globalvar
afunc a b c d e f
echo
$
var1
注意:
#
!
/
bin
/
bash
function quit {
exit
}
function e {
echo
$
1
}
e Hello
e World
quit
echo
foo 

function afunc
{
echo
"
alice: $*
"
echo
"
$0: $1 $2 $3 $4
"
echo
"
$# arguments
"

local var1
var1
=
"
in function
"
echo
var1:
$
var1
return
$
?
}
var1
=
globalvar
afunc a b c d e f
echo
$
var1
定义时不用指定参数,调用时直接用$1,$2...来访问参数。
function 中可以使用local来屏蔽全局变量。
3完!
感谢,Thanks!
作者:iTech
出处:http://itech.cnblogs.com/
本文对比分析了Windows Batch文件的label与Linux Shell的函数特性,详细介绍了两者在调用、参数传递、局部变量等方面的区别,并通过示例代码展示其用法。

9069

被折叠的 条评论
为什么被折叠?



