Wie kann man in einem Shell-Skript herausfinden, ob das System eine systemd- und glib-spezifische Version verwendet?

Wie kann man in einem Shell-Skript herausfinden, ob das System eine systemd- und glib-spezifische Version verwendet?

Ich versuche, das System mit systemd und glibc Version 2.17 zu identifizieren und dann einen bestimmten Codesatz auszuführen. Das ist das Ergebnis, aber ich erhalte die Fehlermeldung

 ./testing.sh: line 4: [[UNIT: command not found

CODE:

#!/bin/sh
glib=`ldd --version | awk '/ldd/{print $NF}'`
ver=2.17
if [[`systemctl`=~-\.mount && $glib '==' $ver ]];then
echo "I have to execute certain specific stuff to glib ver 2.17"
fi

Antwort1

Da Sie die beiden [[ ]]Testformulare verwenden, ist dies(oder ksh), also:

#!/bin/bash

glib=$(ldd --version | awk '/ldd/{print $NF}')

if [[ $glib == 2.17 ]] && systemctl | grep -q '\.mount'; then
  echo "I have to execute certain specific stuff to glib ver 2.17"
fi

NOTIZ

  • verwenden Sie $( )nicht `` in modernen Shell
  • Platziere Räume um [[und]]
  • Ihr Regex-Versuch wird besser mit einem

verwandte Informationen