Aar*_*ron 18 bash cygwin batch-file
我知道Cygwin安装时有一个批处理文件用于在Windows中启动它.但是,如果我想在不启动Cygwin并执行"./script"的情况下运行脚本
如何创建批处理文件来执行此操作?
在...中只有一个批处理文件,单击时打开Cygwin并运行shell脚本.
Jak*_*ron 27
要运行"foo.bsh",请创建包含以下内容的批处理文件并运行它:
set PATH=C:\cygwin\bin;%PATH%
c:\cygwin\bin\bash.exe c:\path\to\foo.bsh
Run Code Online (Sandbox Code Playgroud)
"C:\ cygwin\bin"部分可能因您选择的cygwin安装位置而异.
你可以尝试这样的东西从CMD蹦床到BASH(或任何sh变种):
: <<TRAMPOLINE
@echo off
bash -c "exit 0" || (echo.No bash found in PATH! & exit /b 1)
bash "%~f0" "%*"
goto :EOF
TRAMPOLINE
#####################
#!/bin/bash -- it's traditional!
echo "Hello from $SHELL"
Run Code Online (Sandbox Code Playgroud)
我想扩展Austin Hastings给出的答案,允许它在路径中没有Cygwin的情况下工作,并使用bat文件在目录设置中工作(所以即使是使用不同的"Start in"路径的快捷方式) .更改包括bash的完整路径,使用选项-l使路径和环境正确设置bash,并将当前目录作为弹出的第一个参数(使用shift)传递给bash .记得在文件中使用Unix换行符,否则会出现很多错误.也使用UTF8而不是ANSI.
: <<TRAMPOLINE
@echo off
C:\cygwin\bin\bash -c "exit 0" || (echo.No bash found in PATH! & exit /b 1)
setlocal EnableDelayedExpansion
for %%i in (%*) do set _args= !_args! "%%~i"
C:\cygwin\bin\bash -l "%~f0" "%CD%" %_args%
goto :EOF
TRAMPOLINE
#####################
#!/bin/bash -- it's traditional!
cd "$1"
shift
echo Working from $PWD
Run Code Online (Sandbox Code Playgroud)
编辑:修复了trampoline代码将参数正确传递给bash.BAT文件没有相当于"$ @"的bash,并且处理每个参数的循环然后传递给bash.exe.现在正确处理带空格的参数.
| 归档时间: |
|
| 查看次数: |
32226 次 |
| 最近记录: |