Bash Variable = lee?

  • Hi, ich versuch mich mal wieder nach ein paar Wochen an einem Bash-script jetzt soll er mir folgendes ausgeben wenn ich das Script ohne Variablen starte.

    Code
    iif [ ["$1"=""] || ["$3"=""] ];
    	then
    		echo -e "myunrar Datei name InpFile"
    		exit
    	else
    		echo "Scheisse"
    	fi


    das kommt dabei raus.

    Code
    + '[' =
    /usr/local/bin/myunrar: line 11: [: missing `]'
    + = ']'
    /usr/local/bin/myunrar: line 11: =: command not found
    + echo Scheisse


    Kann irgendwas stimmt da scheinbar mir der if-Abfrage nicht, leider weiß ich nicht was weil meine Kenntnisse sehr bescheiden sind.


    Kann mir vll. einer weiterhelfen?

    mfg eimer


    VDR1: Debian 2.6.24.2 e-Tobi | AMD Mobile 3000+ (~50W Idle) | K8MM3-V | 256MB | 500GB Samsung | TT2300 DVB-C | KabelBW | lautlos | FUSI Scenic 600

  • Hallo eimer,


    die erste Zeile sollte:

    Code
    if [ ! -z "$1" -a ! -z "$3" ];

    sein


    vielleicht auch gleich noch

    Code
    if [ ! -z "$1" -a ! -z "$3" -a -r "$3" ];


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

    3 Mal editiert, zuletzt von HFlor ()

  • So geht es auch:


    Code
    if [ -z "$1" -o -z "$3" ]
    then
                    echo -e "myunrar Datei name InpFile"
                    exit;
    else
                    echo "Scheisse"
    fi

    ASRock P67 Extreme6, Intel core i7-2600, 16GB DDR-3 RAM, Ubuntu 18.04, VDR 2.4.0, Digital Devices Max M4

    RaspberryPi 3, Kodi 18.1, PVR

  • Hallo gdoerrhoefer,


    Zitat

    So geht es auch:...


    Glaube ich nicht, der if und else-Zweig müssen getauscht werden.


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

    Einmal editiert, zuletzt von HFlor ()

  • Ich glaube "eimer" möchte bei leeren Parametern ausgeben, wie der Parameter zu verwenden ist. Da wo er "Sch..." reingeschrieben hat, steht später der Befehl bzw. die Aktion. Und dafür ist if...else korrekt.

    ASRock P67 Extreme6, Intel core i7-2600, 16GB DDR-3 RAM, Ubuntu 18.04, VDR 2.4.0, Digital Devices Max M4

    RaspberryPi 3, Kodi 18.1, PVR

  • Hallo gdoerrhoefer,


    Zitat

    Ich glaube "eimer" möchte bei leeren Parametern ausgeben, wie der Parameter zu verwenden ist. Da wo er "Sch..." reingeschrieben hat, steht später der Befehl bzw. die Aktion. Und dafür ist if...else korrekt.


    Ja, dann stimmt es so.


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • Dann würde ich doch "$#" vorschlagen - damit geht's eindeutig schneller.


    if [ $# -eq 0 ]; then
    echo "mögliche Parameter <> <> <>"
    fi


    uwe

    server: yavdr trusty testing, 2 * L5420, 32GB, 64TB RAID6 an OctopusNet (DVBS2- 8 ) + minisatip@dsi400 (DVBS2- 4 )
    frontends: kodi und xine

  • Wenn du prüfen willst ob dem Script gar keine Argumente übergeben worden sind kannst du auch folgendes machen:


    Code
    if [ $# = 0 ]; then
    	echo -e "myunrar Datei name InpFile"
    	exit
    else
    	echo "..."
    fi


    $# ist immer die Anzahl an Argumenten eines Scriptes oder einer Funktion.


    EDIT: umaier war schneller ;)

    Arch Linux VDR Packages Projekt
    Pakete: dvd, cdda, epgsearch, femon, filebrowser, live, menuorg, mp3, mplayer, osdpip, devstatus, remote, streamdev, systeminfo, text2skin, vdradmin-am, vompserver, xineliboutput, ...
    Hardware: MSI K8MM3-V, Mobile Sempron 3000+, 512MB RAM, 500GB Samsung HD501LJ, Seasonic S12 330, AVBoard 1.4, Antec NSK2480
    Software: Arch Linux, VDR 1.6.0 + Extensions Patch

    Einmal editiert, zuletzt von lubot ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!