无法在我的 .bowerrc 脚本中使用管道字符
Can't use the pipe character in my .bowerrc scripts
这是我的 .bowerrc
:
{
"directory": "vendor/assets/bower",
"scripts": {
"postinstall": "find ./vendor/assets/bower -name '*.html' -print0 | xargs -0 sed -i '' -E -e 's/href=\"https?:\/\//href=\"\/\//g'"
}
}
假设用 href="//
替换 href="https://
的所有实例。我这样做是为了修复我的构建系统的错误。
我收到这个错误:
bower postinstall find ./vendor/assets/bower -name '*.html' -print0 | xargs -0 sed -i '' -E -e 's/href="https?:\/\//href="\/\//g'
bower postinstall find: [object Object]: unknown primary or operator
bower ECMDERR Failed to execute "find ./vendor/assets/bower -name *.html -print0 [object Object] xargs -0 sed -i -E -e s/href="https?:\/\//href="\/\//g", exit code of #1 find: [object Object]: unknown primary or operator
Additional error details:
find: [object Object]: unknown primary or operator
为什么管道字符转换为[object Object]
?如何使命令 运行?
我尝试在 |
:
前添加转义斜线
"postinstall": "find ./vendor/assets/bower -name '*.html' -print0 \| xargs -0 sed -i '' -E -e 's/href=\"https?:\/\//href=\"\/\//g'"
现在我得到:
bower ECMDERR Failed to execute "find ./vendor/assets/bower -name *.html -print0 | xargs -0 sed -i -E -e s/href="https?:\/\//href="\/\//g", exit code of #1 find: |: unknown primary or operator
我在 OSX 10.10.5
我很确定 Bower 不会支持这个命令。看看 this issue. It seems to work only on smallish commands like gulp postInstall
for example. The reason being seems to make some assumptions about the command.
我认为解决办法是将其写入 bash 脚本,然后 运行 这个 bash 脚本。所以将其保存为具有可执行权限的 'postInstall.sh'
,然后将 .bowerrc 更改为在 postInstall 'postInstall: ./postInstall.sh'
这是我的 .bowerrc
:
{
"directory": "vendor/assets/bower",
"scripts": {
"postinstall": "find ./vendor/assets/bower -name '*.html' -print0 | xargs -0 sed -i '' -E -e 's/href=\"https?:\/\//href=\"\/\//g'"
}
}
假设用 href="//
替换 href="https://
的所有实例。我这样做是为了修复我的构建系统的错误。
我收到这个错误:
bower postinstall find ./vendor/assets/bower -name '*.html' -print0 | xargs -0 sed -i '' -E -e 's/href="https?:\/\//href="\/\//g'
bower postinstall find: [object Object]: unknown primary or operator
bower ECMDERR Failed to execute "find ./vendor/assets/bower -name *.html -print0 [object Object] xargs -0 sed -i -E -e s/href="https?:\/\//href="\/\//g", exit code of #1 find: [object Object]: unknown primary or operator
Additional error details:
find: [object Object]: unknown primary or operator
为什么管道字符转换为[object Object]
?如何使命令 运行?
我尝试在 |
:
"postinstall": "find ./vendor/assets/bower -name '*.html' -print0 \| xargs -0 sed -i '' -E -e 's/href=\"https?:\/\//href=\"\/\//g'"
现在我得到:
bower ECMDERR Failed to execute "find ./vendor/assets/bower -name *.html -print0 | xargs -0 sed -i -E -e s/href="https?:\/\//href="\/\//g", exit code of #1 find: |: unknown primary or operator
我在 OSX 10.10.5
我很确定 Bower 不会支持这个命令。看看 this issue. It seems to work only on smallish commands like gulp postInstall
for example. The reason being seems to make some assumptions about the command.
我认为解决办法是将其写入 bash 脚本,然后 运行 这个 bash 脚本。所以将其保存为具有可执行权限的 'postInstall.sh'
,然后将 .bowerrc 更改为在 postInstall 'postInstall: ./postInstall.sh'