WindowsBatch与LinuxShell比较[batchfile之label与shell之函数]
batch file的label与shell的函数比较
1 batch file
@echo off
echo 调用前
echo 调用子过程
call :sub
echo 调用后
Goto end
:sub
echo 子过程调用中
goto :eof
:end
echo 退出
Pause
exit
注意: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
#!/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
注意: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完!