在 linux bash 中,有一个command
命令可以执行“真实”命令,即使你有一个与该命令同名的函数名或脚本文件名。
function ping(){
echo do nothing
}
command ping
仍可工作。
在 Windows 批处理中,我有一个文件,如果我在该文件内部ping.cmd
运行,它就会进入循环。ping
command
Windows 批处理中的等效项是什么?
答案1
答案 1:没有,因为Windows 批处理甚至没有有与 bash 类似的功能。它只有使用与常规命令不同的语法的子程序 - ping
vs call :ping
- 因此不需要覆盖。
如果您仔细阅读文档,command
只会跳过别名和函数,但对 $PATH 中的脚本不执行任何操作。在两个 shell 中,如果你使用真实的脚本文件进行覆盖,找到“真正的”命令取决于你。
答案 2:为了避免你描述的循环,您需要指定全名的“ping”。
对于 bash 来说,这意味着调用
/bin/ping
,或者循环 $PATH 直到找到它。在 Windows 上,存在相同的选项;但是,由于您的脚本实际上被调用
ping.bat
或ping.cmd
,因此您可以跑步ping.exe
以避免循环。