代码之家  ›  专栏  ›  技术社区  ›  giboo

从c或.cmd提示执行.sh

  •  2
  • giboo  · 技术社区  · 7 年前

    我想从C或通过命令提示符(我可以通过C_进一步执行)执行以下shell脚本命令“.sh”。

    我通常使用以下命令来执行.sh文件。

    我手动操作的命令是

    a)打开 塞格温 (Inturn称之为c:\cygwin\bin\mintty.exe-i/cygwin-terminal.ico-)。这将打开Cygwin控制台

    b)转到我需要在其中执行.sh文件的工作目录,使用

    cd <dir in unix format>
    

    c)执行.sh脚本文件

    sh <path to my .sh file in unix format>

    但是,我想使用命令行/c自动执行这些步骤# (即在不打开控制台/应用程序(如mintty.exe或bash.exe)的情况下执行)

    注:中提供的示例 How do i start Mintty and run a script file? 没有帮助我,因为他们只是在打开后关闭,没有执行我的命令。

    2 回复  |  直到 7 年前
        1
  •  1
  •   jeb    7 年前

    如果还需要mintty窗口(使用vt100转义序列时很有用),可以使用批处理包装文件。

    @echo off
    setlocal EnableDelayedExpansion
    set "script=%~1"
    set "cygwin=C:\cygwin64\bin"
    set "path=!cygwin!;!path!"
    mode con lines=80 cols=120
    
    REM C:\cygwin\bin\mintty
    start "cygwin window" !cygwin!\mintty.exe -i /cygdrive/c/Windows/System32/compstui.dll,53 --exec "!script!"
    

    您应该(至少)将cygwin/bin目录前缀为path变量,否则会得到奇怪的结果。

    这个 -i ...compstui.dll,53 仅用于更改任务栏/窗口中的图标

        2
  •  1
  •   Hagai Wild    7 年前

    您可以使用c:\cygwin\bash直接使用bash运行脚本。

    例子: c:\cygwin\bin\bash --login "C:\foo.bsh"