S'il est basé sur Debian.
aptitude show postgresql | grep State
Mais je suppose que vous pouvez simplement essayer de le lancer avec un drapeau comme --version
, qui imprime simplement quelques informations et quitte.
Mise à jour en utilisant "service postgres status". Essayez :
service postgres status
if [ "$?" -gt "0" ]; then
echo "Not installed".
else
echo "Intalled"
fi
On peut simplement écrire :
psql --version
la sortie s'affiche comme :
psql (PostgreSQL) 11.5 (Ubuntu 11.5-1.pgdg18.04+1)
Il n'y a pas de moyen simple de le faire. Tout ce que vous pouvez faire est de vérifier auprès du gestionnaire de paquets (rpm, dpkg) ou de sonder certains emplacements probables pour les fichiers que vous souhaitez. Ou vous pouvez essayer de vous connecter à un port probable (5432) et voir si vous obtenez une réponse de protocole PostgreSQL. Mais rien de tout cela ne sera très robuste. Vous voudrez peut-être revoir vos besoins.
Pourquoi ne pas essayer le which
commande ?
Si vous deviez exécuter which psql
et que Postgres n'est pas installé, il semble n'y avoir aucune sortie. Vous obtenez juste l'invite du terminal prête à accepter une autre commande :
> which psql
>
Mais si Postgres est installé, vous obtiendrez une réponse avec le chemin vers l'emplacement de l'installation de Postgres :
> which psql
/opt/boxen/homebrew/bin/psql
En regardant man which
il semble également y avoir une option qui pourrait vous aider :
-s No output, just return 0 if any of the executables are found, or
1 if none are found.
Il semble donc que tant que le langage de script que vous utilisez peut exécuter une commande de terminal, vous pouvez envoyer which -s psql
et utilisez la valeur de retour pour déterminer si Postgres est installé. À partir de là, vous pouvez imprimer ce résultat comme bon vous semble.
J'ai installé postgres sur ma machine donc j'exécute ce qui suit
> which -s psql
> echo $?
0
qui me dit que la commande a retourné 0, indiquant que l'exécutable Postgres a été trouvé sur ma machine.
Voici les informations sur l'utilisation de echo $?