2015-11-16 4 views
0

J'utilise git buildpackage pour créer des paquets Debian à partir de mon application.Comment faire git buildpackage utiliser bash au lieu de sh

Dans le dossier Debian sous mon répertoire d'applications que je dispose d'un fichier de gbp.conf remplaçant les valeurs par défaut pour gbp:

[DEFAULT] 
builder = dpkg-buildpackage -b 
ignore-new = True 
prebuild = if [[ $(sed -n 's|^[ ]*foobarVersion = "\(.*\)"|\1|p' example.file) == *"TEST"* ]]; then echo "yes"; fi 

La commande prebuild fonctionne très bien quand je l'ai mis dans un fichier .sh avec un tralala # !/bin/bash en haut et fonctionne également en ligne de commande. Mais il semble que buildpackage git exécute la commande avec bin/sh parce que je reçois l'erreur suivante:

[email protected]:~/application$ git buildpackage 
/bin/sh: 1: [[: not found 

Comment puis-je faire bin/bash utilisation git buildpackage au lieu de bin/sh lors de l'appel des commandes pré-compilé à partir gbp.conf ? Si c'est une solution plus simple, comment écrire l'instruction suivante pour travailler avec bin/sh?

Répondre

0

Je n'ai jamais utilisé git buildpackage, mais vous devriez pouvoir remplacer le shell spécifique à Bash [[ par la commande POSIX case afin de correspondre à un motif; sh est l'implémentation de shell compatible POSIX.

Au lieu de

if [[ $(sed -n 's|^[ ]*foobarVersion = "\(.*\)"|\1|p' example.file) == *"TEST"* ]]; then echo "yes"; fi 

utilisation

case "$(sed -n 's|^[ ]*foobarVersion = "\(.*\)"|\1|p' example.file)" in *TEST*) echo yes; esac