我正在为 Windows 编写一个 makefile,并且正在尝试将他的 UNIX 代码片段转换为 Windows:
@read -p "Version? (provide the next x.y.z semver) : " TAG
@git commit -m "release: version $${TAG} 🚀"
我的 makefile 作为
ONESHELL
片段运行,unix 变体工作完美。但是,对于 Windows,我找不到一种方法来要求用户输入并随后使用此输入,例如与 set /p
。
@set /p TAG="Version? (provide the next x.y.z semver) : "
@git commit -m "release: version %TAG% 🚀"
我想使用本机 Windows powershell/cmd,而不是像 cygwin 这样的东西。
问题是,环境变量尚未设置,因为它在
ONESHELL
中运行(我认为)。此外,我也无法设置任何其他(临时)环境变量供以后在 Windows 中的代码片段使用。
我尝试启用延迟扩展(
setlocal delayedexpansion
),据我所知,这应该是这个问题的解决方案;但这在 makefile 中似乎不可能。
使用
-
运算符强制执行子 shell 也不起作用,以及使用 $(shell ...) 将代码片段放入单独的 shell 中
那又如何
set /p tag="which version?"
echo "will use %tag%"