Περισσότερα
Πώς μπορώ να συγκρίνω δύο μεταβλητές συμβολοσειράς σε μια δήλωση 'if' στο Bash;
Προσπαθώ να κάνω μια δήλωση if
να λειτουργήσει στο Bash (χρησιμοποιώντας Ubuntu):
#!/bin/bash
s1="hi"
s2="hi"
if ["$s1" == "$s2"]
then
echo match
fi
Έχω δοκιμάσει διάφορες μορφές της δήλωσης if
, χρησιμοποιώντας [["$s1" == "$s2"]]
, με και χωρίς εισαγωγικά, χρησιμοποιώντας =
, ==
και -eq
, αλλά εξακολουθώ να λαμβάνω το ακόλουθο σφάλμα:
[hi: η εντολή δεν βρέθηκε
Έχω κοιτάξει διάφορες τοποθεσίες και σεμινάρια και τα έχω αντιγράψει, αλλά δεν λειτουργεί - τι κάνω λάθος;
Τελικά, θέλω να πω αν το $s1
περιέχει το $s2
, οπότε πώς μπορώ να το κάνω αυτό;
Έκανα μόλις το κομμάτι με τα κενά... :/ Πώς μπορώ να πω περιέχει;
Δοκίμασα
if [[ "$s1" == "*$s2*" ]]
αλλά δεν λειτούργησε.
568
3
Χρειάζεστε χώρους:
Θα πρότεινα:
Χωρίς τα διπλά εισαγωγικά και με ένα μόνο ισότιμο.
Δεν έχω πρόσβαση σε ένα linux box αυτή τη στιγμή, αλλά το [ είναι στην πραγματικότητα ένα πρόγραμμα (και ένα ενσωματωμένο bash), οπότε νομίζω ότι πρέπει να βάλετε ένα κενό μεταξύ του [ και της πρώτης παραμέτρου.
Σημειώστε επίσης ότι ο τελεστής ισότητας συμβολοσειρών φαίνεται να είναι ένα απλό =