JavaScriptillä on tätä varten toiminto:
"world".startsWith("w") true
Kuinka voin testata tämän kuorella? Minulla on tämä koodi:
if [ world = w ] then echo true else echo false fi
mutta se epäonnistuu, koska se testaa tasa-arvoa. Haluaisin mieluummin käyttää sisäänrakennettua, mutta kaikki tämän sivun apuohjelmat ovat hyväksyttäviä:
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
Vastaa
Jos komentosi on bash: kaksoissulkeissa, == -operaattorin oikea puoli on kuvio, ellei sitä ole täysin lainattu:
if [[ world == w* ]]; then echo true else echo false fi
Tai tarkemmin: [[ world == w* ]] && echo true || echo false
[*]
Jos et kohdista bashia nimenomaan: käytä tapauslauseketta mallien sovittamiseen
case "world" in w*) echo true ;; *) echo false ;; esac
[*], mutta sinun on oltava varovainen A && B || C
-lomake, koska C
suoritetaan, jos joko A epäonnistuu tai B epäonnistuu. if A; then B; else C; fi
-lomake vain suorittaa C: n, jos A epäonnistuu.
Vastaa
set world
Sitten:
if [ "${1%%w*}" ] then echo false else echo true fi
- Poista alaryhmä aggressiivisesti alkaen
w
lähdemerkkijonosta - Jos jotain on jäljellä, lähdemerkkijono ei ala toisesta merkkijonosta
Tai:
if [ "$1" = "${1#w}" ] then echo false else echo true fi
- Poista
w
lähdemerkkijonosta - Vertaa lähdemerkkijonoon
- Jos yhtäsuuri, niin lähdemerkkijono ei ala toisesta merkkijonosta