是否可以在批处理脚本中运行msys bash 命令?假设我有一个 .bat文件,其中我有我的 windows 批处理命令,并且在一行中我将切换到msys bash 来处理msys指定的命令。像这样:
[...]
batch commands
[...]
C:\mingw\msys\1.0\bin\sh -l
mount 'C:\mingw\local32' /local32
[...]
bash commands
[...]
感谢帮助!
jb_
是否可以在批处理脚本中运行msys bash 命令?假设我有一个 .bat文件,其中我有我的 windows 批处理命令,并且在一行中我将切换到msys bash 来处理msys指定的命令。像这样:
[...]
batch commands
[...]
C:\mingw\msys\1.0\bin\sh -l
mount 'C:\mingw\local32' /local32
[...]
bash commands
[...]
感谢帮助!
jb_
为什么不将所有 shell 命令放在一个单独的文件中,然后从批处理文件中的一行中调用该脚本?
C:\mingw\msys\1.0\bin\sh your-msys-script.sh
我现在找到了一个更好的方法:我使用 mintty 控制台,我认为它也可以与其他控制台一起使用。mintty 在 msys/1.0/bin 下,有一个快捷方式我用参数指向 mintty:/bin/sh -l。现在我可以从批处理文件参数发送到该快捷方式。例如:mintty.lnk script.sh
.SH 文件类似于 Windows 操作系统中的批处理文件,如果已激活基于 Linux 的 Windows 操作系统,则可以在 Windows 中运行。因此,要使用适用于 Linux 的 Windows 子系统在 Windows 10 中运行 .SH 文件,如果您的 Linux 子系统尚未安装,请执行以下操作:
转到设置 > 更新和安全 > 对于开发人员。检查开发人员模式单选按钮。并搜索“<em>Windows 功能”,选择“<strong>打开或关闭 Windows 功能”。滚动找到 WSL,选中该框,然后安装它。完成后,必须重新启动才能完成安装请求的更改。按立即重新启动。BASH 将在命令提示符和您的 PowerShell 中可用。
执行 bash 脚本文件
打开命令提示符并转到包含.sh文件的文件夹。键入 Bash script-filename.sh 并按回车键。它将执行脚本,并且根据文件,您应该会看到输出。
并作为文本:
echo "Current state:"
UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")
if [ $LOCAL = $REMOTE ]; then
echo "Up-to-date"
elif [ $LOCAL = $BASE ]; then
echo "Need to pull"
elif [ $REMOTE = $BASE ]; then
echo "Need to push"
else
echo "Diverged"
fi
运行包含 bash 脚本文件的批处理文件
您可以在下图中看到如何从批处理文件启动 bash 文件:
@echo off
START /wait ./state.sh
echo . . . . . . . . . . . . . . . . . . . .
echo 'The program executed successfully!'
echo . . . . . . . . . . . . . . . . . . . .
现在您的批处理文件已准备好执行。
希望这个答案可以帮助那些寻求解决此类问题的人。