我正在使用git buildpackage从我的应用程序创建debian包。
在我的应用程序目录下的Debian文件夹中,我有一个gbp.conf文件覆盖了gbp的默认值:
[DEFAULT]
builder = dpkg-buildpackage -b
ignore-new = True
prebuild = if [[ $(sed -n 's|^[ ]*foobarVersion = "\(.*\)"|\1|p' example.file) == *"TEST"* ]]; then echo "yes"; fi
prebuild命令工作正常,当我把它放在.sh文件中,顶部是一个shebang#!/ bin / bash,并且在命令行中也可以使用straigt。但看起来git buildpackage使用bin / sh运行命令,因为我收到以下错误:
me@my-instance:~/application$ git buildpackage
/bin/sh: 1: [[: not found
当从gbp.conf调用prebuild命令时,如何让git buildpackage使用bin / bash而不是bin / sh? 如果它是一个更简单的解决方案,我将如何编写以下语句来使用bin / sh?
答案 0 :(得分:0)
我从未使用过git buildpackage但你应该能够用POSIX [[
命令替换case
Bash特定的shell内置以匹配模式; sh
是符合POSIX标准的shell实现。
而不是
if [[ $(sed -n 's|^[ ]*foobarVersion = "\(.*\)"|\1|p' example.file) == *"TEST"* ]]; then echo "yes"; fi
使用
case "$(sed -n 's|^[ ]*foobarVersion = "\(.*\)"|\1|p' example.file)" in *TEST*) echo yes; esac