【问题标题】:Using Batch argument in a bash terminal在 bash 终端中使用 Batch 参数
【发布时间】: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


【解决方案1】:

通过一个 bat 脚本,我成功地完成了这项工作:

set COMMIT=%1
echo COMMIT: %COMMIT%
bash -l -c "COMMIT=%COMMIT% bash -l -c 'echo \${COMMIT}'"

意思:

  • 让 bat 脚本在 bash 命令中解析 %COMMIT%
  • 在第一个bash -c 中设置COMMIT 后,在bash 中调用一个bash
  • 转义$

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 2017-08-31
    • 2019-08-29
    • 2023-02-05
    • 2021-11-30
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多