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
    1. iif [ ["$1"=""] || ["$3"=""] ];
    2. then
    3. echo -e "myunrar Datei name InpFile"
    4. exit
    5. else
    6. echo "Scheisse"
    7. fi


    das kommt dabei raus.

    Code
    1. + '[' =
    2. /usr/local/bin/myunrar: line 11: [: missing `]'
    3. + = ']'
    4. /usr/local/bin/myunrar: line 11: =: command not found
    5. + 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
    1. if [ ! -z "$1" -a ! -z "$3" ];

    sein


    vielleicht auch gleich noch

    Code
    1. 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!

    The post was edited 3 times, last by HFlor ().

  • So geht es auch:


    Code
    1. if [ -z "$1" -o -z "$3" ]
    2. then
    3. echo -e "myunrar Datei name InpFile"
    4. exit;
    5. else
    6. echo "Scheisse"
    7. 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,


    Quote

    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!

    The post was edited 1 time, last by 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,


    Quote

    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
    1. if [ $# = 0 ]; then
    2. echo -e "myunrar Datei name InpFile"
    3. exit
    4. else
    5. echo "..."
    6. 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

    The post was edited 1 time, last by lubot ().