Annak megállapítása, hogy az első karakterlánc a második karakterlánccal kezdődik-e

A JavaScript rendelkezik ezzel a funkcióval:

"world".startsWith("w") true 

Hogyan tesztelhetem ezt héjjal? Ez a kód megvan:

if [ world = w ] then echo true else echo false fi 

, de nem sikerül, mert teszteli az egyenlőséget. Inkább egy beépített beépítést használnék, de az ezen az oldalon található összes segédprogram elfogadható:

http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html

Válasz

Ha héja bash: dupla zárójelben, az == operátor jobb oldala egy minta, hacsak nem teljesen idézett:

if [[ world == w* ]]; then echo true else echo false fi 

Vagy röviden: [[ world == w* ]] && echo true || echo false [*]

Ha nem kifejezetten a bash-t célozza meg: használja a kis- és nagybetűk használatát a mintaillesztéshez

case "world" in w*) echo true ;; *) echo false ;; esac 

[*], de vigyáznia kell a A && B || C űrlap, mert C akkor kerül végrehajtásra, ha vagy A meghiúsul vagy B meghibásodik. A if A; then B; else C; fi űrlap csak csak akkor hajtja végre a C-t, ha A nem sikerül.

Válasz

set world 

Ezután:

if [ "${1%%w*}" ] then echo false else echo true fi 
  1. Agresszívan távolítsa el a w a forrás karakterláncból
  2. Ha maradt valami, akkor a forrás karakterlánc nem a második karakterlánccal kezdődik

Vagy:

if [ "$1" = "${1#w}" ] then echo false else echo true fi 
  1. w eltávolítása a forrás karakterláncból
  2. Összehasonlítás a forrás karakterlánccal
  3. Ha egyenlő, akkor a forrás karakterlánc nem a második karakterlánccal kezdődik

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük