JavaScript má funkci:
"world".startsWith("w") true
Jak to mohu otestovat pomocí shellu? Mám tento kód:
if [ world = w ] then echo true else echo false fi
, ale selže, protože testuje rovnost. Raději bych použil vestavěný, ale jakékoli nástroje z této stránky by byly přijatelné:
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
Odpověď
Pokud je váš shell bash: v dvojitých závorkách je pravá strana operátoru == vzor, pokud není zcela citován:
if [[ world == w* ]]; then echo true else echo false fi
Nebo stručněji: [[ world == w* ]] && echo true || echo false
[*]
Pokud necílíte konkrétně na bash: použijte příkaz case pro porovnávání vzorů
case "world" in w*) echo true ;; *) echo false ;; esac
[*], ale s A && B || C
formulář, protože C
bude spuštěn, pokud buď Selhání nebo B selhání. if A; then B; else C; fi
formulář pouze provede C, pokud A selže.
Odpovědět
set world
Potom:
if [ "${1%%w*}" ] then echo false else echo true fi
- Agresivně odstraňte podřetězec začínající
w
ze zdrojového řetězce - Pokud něco zbylo, zdrojový řetězec nezačíná druhým řetězcem
Nebo:
if [ "$1" = "${1#w}" ] then echo false else echo true fi
- Odebrat
w
ze zdrojového řetězce - Porovnat se zdrojovým řetězcem
- Je-li stejný, zdrojový řetězec nezačíná druhým řetězcem