[Erreur Linux] ex4.sh: 44 lignes: [: 100: un opérateur à terme unique est attendu

[Message d'erreur] Un seul opérateur de terme est attendu

Erreur survenue lors de l'utilisation de l'instruction if et de l'instruction while Je ne suis pas sûr, alors je vais laisser la cause et la solution.

-Il peut y avoir un espace perdu (parfois un espace pleine largeur) dans ou autour de la ligne indiquée. -S'il y a un espace vide, un message d'erreur peut s'afficher car le traitement normal ne peut pas être effectué. Ce message d'erreur a plusieurs causes, donc si vous ne pouvez pas le résoudre, veuillez consulter d'autres articles.

Cette fois, la commande qui a identifié la cause est répertoriée au bas de l'article, veuillez donc la vérifier.


Code écrit

Fichier



    1  #!/bin/bash
     2
     3  read -p 'Veuillez saisir le nom du fichier' 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 'Il n'y a pas une telle commande'
    56                  exit 1
    57          fi
    58  else
    59      echo 'Le nom de fichier que vous avez entré n'existe pas'
    60      exit 1
    61  fi

<Message d'erreur>

ex4.sh: 44 lignes: [: 100: opérateur mononome attendu

Puisqu'il y avait de «l'espace perdu» dans une partie du fichier appelé, l'espace a également été calculé pendant le traitement. J'ai un message d'erreur

J'ai exécuté la commande suivante pour identifier la cause. Cette commande est "vous pouvez vérifier quel type de commande est exécuté".

commande bash


bash -x nom de fichier

Article de référence

· 1. Supprimer "un seul opérateur de terme est attendu" 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. Erreur lors de la spécification de la partie numérique du tableau avec une variable dans bash https://okwave.jp/qa/q8362685.html

Recommended Posts

[Erreur Linux] ex4.sh: 44 lignes: [: 100: un opérateur à terme unique est attendu
collection d'erreur de commande linux 1