Ensimmäisen merkkijonon alkaminen toisella merkkijonolla

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 
  1. Poista alaryhmä aggressiivisesti alkaen w lähdemerkkijonosta
  2. Jos jotain on jäljellä, lähdemerkkijono ei ala toisesta merkkijonosta

Tai:

if [ "$1" = "${1#w}" ] then echo false else echo true fi 
  1. Poista w lähdemerkkijonosta
  2. Vertaa lähdemerkkijonoon
  3. Jos yhtäsuuri, niin lähdemerkkijono ei ala toisesta merkkijonosta

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *