Sehr lange, viel zu lange, habe ich an der Problematik gesessen, wie man „bash“ (unter Debian Linux) einen if-Vergleich mit mehreren Variablen, die „or“ verknüpft sind, realisiert. Es funktioniert:

  • if [[ $ERGEBNISCMP -eq 1 ]] || [[ $ERSTESMAL -eq 1 ]]; then

Also zwei eckige Klammern und das „or“ mit zwei senkrechten „Pipe“-Symbolen.

Andere Versuche waren:

  • # if [[ -z $1 ]] || [[ ! -r $1 ]]
  • # if [[ $? -eq 1 ]] || [[ $ERSTESMAL -eq 1 ]]; then
  • # if [[ $ERGEBNISCMP == 1 || $ERSTESMAL == 1 ]]; then

Es kann sein, daß auch das funktioniert.

Das entscheidende Problem ist aber, daß die „Standard-Shell“, /bin/sh, auf „dash“ zeigt:

lrwxrwxrwx 1 root root 4 10. Dez 2020 /bin/sh -> dash

Und damit funktioniert es nicht und es treten die seltsamsten Fehler auf.

In die erste Zeile muß also ein:

  • !/bin/bash

Dann geht es. Vielen Dank an den, der darauf hingewiesen hat in einem Forums-Post – und ich habe diesen Hinweis zu lange nicht ernst genug genommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert