Comparer un personnage à un devis ou à un devis unique

Je veux comparer si un personnage est égal à une citation ou une citation simple mais rien ne semble fonctionner …

J’ai essayé d’atsortingbuer une variable et de comparer comme

QUOTE=$(echo -e "\042") if [[ "$CHAR" == "$QUOTE" ]] 

Étant donné que je suis un peu débutant, j’ai aussi essayé différentes choses à l’intérieur de l’if-déclaration:

 if [ "$CHAR" = "/"" ] if [ "$CHAR" = '"' ] if [ "$CHAR" = $'\"' ] 

Le dernier que j’ai essayé parce qu’il a fonctionné en essayant de comparer à une nouvelle ligne comme

 [ "$CHAR" = $'\n' ] 

J’ai aussi essayé avec des crochets doubles [[…]] et des doubles signes égaux == puisque je ne suis pas sûr du moment de les utiliser mais sans succès.

Été assis pendant 2 heures à essayer de trouver la solution sans aucun progrès, s’il vous plaît aider …

Pour tester un double devis:

 if [ "$char" = '"' ]; then 

Pour tester un devis unique, utilisez:

 if [ "$char" = "'" ]; then 

De côté

N’utilisez pas toutes les majuscules pour les noms de variables. Le système utilise toutes les majuscules pour ses noms et vous ne souhaitez pas en écraser une accidentellement.

Trois d’entre eux fonctionnent bien pour comparer un caractère à un guillemet double, tandis que le dernier est syntaxiquement invalide (car il utilise "/"" au lieu de "\"" ). Fixant cela, les voici tous:

 #!/bin/bash CHAR='"' QUOTE=$(echo -e "\042") if [[ "$CHAR" == "$QUOTE" ]] then echo "Method 1 works" fi if [ "$CHAR" = "\"" ] then echo "Method 2 works" fi if [ "$CHAR" = '"' ] then echo "Method 3 works" fi if [ "$CHAR" = $'\"' ] then echo "Method 4 works" fi 

En cours d’exécution:

 $ chmod +x myscript && ./myscript Method 1 works Method 2 works Method 3 works Method 4 works 

La réponse évidente à la raison pour laquelle vous pensez qu’ils ne fonctionnent pas est que la valeur que vous comparez n’est pas une citation ou un caractère unique. Cela montre l’importance de créer un MCVE , pas pour obtenir de meilleures réponses sur SO, mais parce que vous réduirez le problème à autre chose dans votre script.