[Linux-Fehler] ex4.sh: 44 Zeilen: [: 100: Einzelter Termoperator wird erwartet

[Fehlermeldung] Es wird ein Operator mit einem Begriff erwartet

Fehler, der in der Übung mit der if-Anweisung und der while-Anweisung aufgetreten ist Ich bin mir nicht sicher, also werde ich die Ursache und Lösung verlassen.

Dieses Mal ist der Befehl, der die Ursache identifiziert hat, am Ende des Artikels aufgeführt. Überprüfen Sie ihn daher bitte.


Geschriebener Code

Datei



    1  #!/bin/bash
     2
     3  read -p 'Bitte geben Sie den Dateinamen ein' fh
     4  if [ -f $fh ];
     5  then
     6          read -p  'sum, avg, min, max, exit ' command
     7          if [ $command = 'sum' ];
     8          then
     9                  sum=0
    10                  while read p;
    11                  do
    12                    sum=$(( sum + p ))
    13                  done < $fh
    14                  echo SUM: $sum
    15                  exit 0
    16          elif [ $command = 'avg' ];
    17          then
    18                  sum=0
    19                  count=0
    20                  while read p;
    21                  do
    22                    sum=$(( sum + p ))
    23                    count=$(( count + 1 ))
    24                  done < $fh
    25                  echo AVG: $(( sum / count ))
    26                  exit 0
    27          elif [ $command = 'min' ];
    28          then
    29                  min=101
    30                  while read p;
    31                  do
    32                          if [ $min -gt $p ];
    33                          then
    34                                  min=$p
    35                          fi
    36                  done < $fh
    37                  echo MIN: $min
    38                  exit 0
    39          elif [ $command = 'max' ];
    40          then
    41                  max=0
    42                  while read p;
    43                  do
    44                          if [ $max -lt $p ];
    45                          then
    46                                  max=$p
    47                          fi
    48                  done < $fh
    49                  echo MAX: $max
    50                  exit 0
    51          elif [ $command = 'exit' ];
    52          then
    53              exit 0
    54          else
    55                  echo 'Es gibt keinen solchen Befehl'
    56                  exit 1
    57          fi
    58  else
    59      echo 'Der von Ihnen eingegebene Dateiname existiert nicht'
    60      exit 1
    61  fi

ex4.sh: 44 Zeilen: [: 100: erwarteter mononomischer Operator

<Lösung>

Da in einem Teil der aufgerufenen Datei "Speicherplatz verschwendet" wurde, wurde der Speicherplatz auch während der Verarbeitung berechnet. Ich habe eine Fehlermeldung erhalten

Ich habe den folgenden Befehl ausgeführt, um die Ursache zu identifizieren. Dieser Befehl lautet "Sie können überprüfen, welche Art von Befehl ausgeführt wird".

Bash-Befehl


bash -x Dateiname

Referenzartikel

・ 1. Unterdrücken Sie "ein einzelner Termoperator wird erwartet" https://www.bee-planetz.com/blog/%E3%80%8C%E5%8D%98%E9%A0%85%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%8C%E4%BA%88%E6%9C%9F%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%8D%E3%82%92%E6%8A%91%E5%88%B6%E3%81%99%E3%82%8B/

・ 2. Fehler beim Angeben des Nummernteils des Arrays mit einer Variablen in bash https://okwave.jp/qa/q8362685.html

Recommended Posts

[Linux-Fehler] ex4.sh: 44 Zeilen: [: 100: Einzelter Termoperator wird erwartet
Linux-Befehlsfehlersammlung 1