在 MinGW 中解析批处理文件
Parsing a batch file in MinGW
嗨,我有一个卷曲的。
我正在尝试通过 Ming64W 命令中的批处理文件下载 Selenium 的网络驱动程序 window。
此命令适用于 Ming64:
curl -vs https://github.com/mozilla/geckodriver/releases/latest/ |grep -i "v0.16.1"|cut -d\" -f2
但是当我在批处理文件中执行它时,我无法理解命令行解析器的执行顺序。
此代码:
#GetFF.bat
curl -vs https://github.com/mozilla/geckodriver/releases/latest/ |grep -i "v0.16.1"|cut -d^^^" -f2
不起作用,因为 cut
的分隔符必须是单个字符,而 \"
不是有效的批处理文件分隔符。
事实证明这完全是个坏主意。问题是处理 DOS 批处理文件的解析器会在运行时剥离标记,但另一方面 bash 不会。所以解析器最终陷入了彼此的僵局。易于修复。在 xmllint 和 bsdtar 的帮助下重做 UNIX 命令。代码是:
curl -vs https://chromedriver.storage.googleapis.com |xmllint --format -|grep -i "$win32"|grep -i "<Key>$forceversion"|cut -d '>' -f2|sort -nrk1|head -1|cut -d '<' -f1|awk '{system("curl -o '$win32' https://chromedriver.storage.googleapis.com/")}'|bsdtar -xf - -C chromedriver-x86.exe
嗨,我有一个卷曲的。
我正在尝试通过 Ming64W 命令中的批处理文件下载 Selenium 的网络驱动程序 window。
此命令适用于 Ming64:
curl -vs https://github.com/mozilla/geckodriver/releases/latest/ |grep -i "v0.16.1"|cut -d\" -f2
但是当我在批处理文件中执行它时,我无法理解命令行解析器的执行顺序。
此代码:
#GetFF.bat
curl -vs https://github.com/mozilla/geckodriver/releases/latest/ |grep -i "v0.16.1"|cut -d^^^" -f2
不起作用,因为 cut
的分隔符必须是单个字符,而 \"
不是有效的批处理文件分隔符。
事实证明这完全是个坏主意。问题是处理 DOS 批处理文件的解析器会在运行时剥离标记,但另一方面 bash 不会。所以解析器最终陷入了彼此的僵局。易于修复。在 xmllint 和 bsdtar 的帮助下重做 UNIX 命令。代码是:
curl -vs https://chromedriver.storage.googleapis.com |xmllint --format -|grep -i "$win32"|grep -i "<Key>$forceversion"|cut -d '>' -f2|sort -nrk1|head -1|cut -d '<' -f1|awk '{system("curl -o '$win32' https://chromedriver.storage.googleapis.com/")}'|bsdtar -xf - -C chromedriver-x86.exe