J’essaie de prendre deux entrées de chaîne et de vérifier si elles sont égales ou pas, sinon égales, alors indiquez la longueur du caractère. Je ne suis pas trouvé d’erreur après avoir tapé deux chaînes, quelqu’un peut-il dire ce que je fais mal? j’ai essayé d’utiliser:
#!/bin/bash while true; do echo "Please Enter two name to compare" read name_1 name_2 1=${#name_1} 2=${#name_2} if [ "$name_1" -eq "$name_2" ] then echo "$name_1 and $name_2 are equal" else echo "$name_1 and $name_2 are not equal" fi echo "Ssortingng 1 length is $(1)" echo "Ssortingng 2 length is $(2)" done
Points:
Une variable définie par l’utilisateur dans bash
ne peut pas commencer par un chiffre et ne peut évidemment pas être qu’un chiffre
-eq
fait la comparaison arithmétique; comme vous comparez des chaînes utilisez =
(POSIX) ou ==
Celui-ci travaillera exactement comme prévu:
#!/bin/bash while true; do echo "Please Enter two name to compare" read name_1 name_2 one=${#name_1} two=${#name_2} if [ "$name_1" = "$name_2" ] then echo "$name_1 and $name_2 are equal" else echo "$name_1 and $name_2 are not equal" fi echo "Ssortingng 1 length is $one" echo "Ssortingng 2 length is $two" done
Essayez ce qui suit J’ai utilisé [[ ]]
autour de votre if
et changé les variables de 1
et 2
en x
et y
:
#!/bin/bash while true; do echo "Please Enter two name to compare" read name_1 name_2 x=${#name_1} y=${#name_2} if [[ "$name_1" == "$name_2" ]] then echo "$name_1 and $name_2 are equal" else echo "$name_1 and $name_2 are not equal" fi echo "Ssortingng 1 length is $x" echo "Ssortingng 2 length is $y" done exit