JavaScript are o funcție pentru aceasta:
"world".startsWith("w") true
Cum pot testa acest lucru cu shell? Am acest cod:
if [ world = w ] then echo true else echo false fi
dar eșuează deoarece testează egalitatea. Aș prefera să folosesc un program încorporat, dar orice utilitare din această pagină ar fi acceptabilă:
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
Răspuns
Dacă shell-ul dvs. este bash: între paranteze duble, partea dreaptă a operatorului == este un model dacă nu este complet citat:
if [[ world == w* ]]; then echo true else echo false fi
Sau mai mult: [[ world == w* ]] && echo true || echo false
[*]
Dacă nu vizați bash în mod specific: utilizați instrucțiunea de caz pentru potrivirea modelelor
case "world" in w*) echo true ;; *) echo false ;; esac
[*], dar trebuie să aveți grijă cu A && B || C
formular deoarece C
va fi executat dacă fie A eșuează sau B eșuează. Formularul if A; then B; else C; fi
va doar va executa C dacă A eșuează.
Răspunde
set world
Apoi:
if [ "${1%%w*}" ] then echo false else echo true fi
- Eliminați agresiv sub șirul începând cu
w
din șirul sursă - Dacă mai rămâne ceva, șirul sursă nu începe cu al doilea șir
Sau:
if [ "$1" = "${1#w}" ] then echo false else echo true fi
- Eliminați
w
din șirul sursă - Comparați cu șirul sursă
- Dacă este egal, atunci șirul sursă nu începe cu al doilea șir