【发布时间】:2017-08-15 03:14:50
【问题描述】:
我正在尝试在批处理脚本中执行以下操作:
@echo off
SETLOCAL
set BASHPATH="C:\Program Files (x86)\Git\bin\"
set PATH=%BASHPATH%;%PATH%
set COMMIT=%1
echo COMMIT: %COMMIT%
%BASHPATH%\bash -l -c "echo COMMIT: $COMMIT \ && git checkout -f $COMMIT \ && git submodule update -f \ && git clean -fdx \ && git submodule foreach git clean -fdx \ && call $SCRIPT_PATH\name_all.sh \ && call $SCRIPT_PATH\name_all_log.sh \ && cd FCW \ && cd ObjectDetectionTest \ && exit; bash";
set CYGWINPATH="C:\cygwin64\bin"
set PATH=%CYGWINPATH%;%PATH%
ENDLOCAL
但是当我运行脚本时,$COMMIT 什么都没有!那么,我做错了什么?
【问题讨论】:
-
输入输出是什么?
-
我知道你在哪里设置
%COMMIT%,但是你在哪里设置$COMMIT? (它们是完全不同的变量!) -
@SomethingDark - 不,它们不是不同的变量 - 至少不是你的意思。当 bash shell 从 Windows shell 继承其环境时,
%FOO%被继承为$FOO,因为不同的 shell 使用了不同的约定 -
@MohamedAmeen - 我不明白为什么这行不通,而且在我刚刚运行的模拟测试中,同样的模式运行良好。您记得在运行脚本时将提交值作为第一个参数传递,对吧(因为您是从
%1读取的)? -
@Mark Adelsberger 感谢您让我正确,即使您对我的回答投了反对票。我尊重这一点。我确实测试了我的答案,但不专心地对其进行了编辑以更好地作为答案。然后把它弄坏了。
标签: git bash batch-file git-bash