JavaScript ma do tego funkcję:
"world".startsWith("w") true 
Jak mogę to przetestować za pomocą powłoki? Mam taki kod:
if [ world = w ] then echo true else echo false fi 
ale kończy się niepowodzeniem, ponieważ sprawdza równość. Wolałbym używać wbudowanego, ale wszystkie narzędzia z tej strony byłyby dopuszczalne:
http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html
Odpowiedź
Jeśli twoja powłoka to bash: w podwójnych nawiasach, prawa strona operatora == to wzorzec, chyba że jest w pełni cytowany:
if [[ world == w* ]]; then echo true else echo false fi 
 Lub bardziej zwięźle: [[ world == w* ]] && echo true || echo false [*] 
Jeśli nie kierujesz się konkretnie na bash: użyj instrukcji case do dopasowania wzorca
case "world" in w*) echo true ;; *) echo false ;; esac 
 [*], ale musisz uważać na , ponieważ C zostanie wykonany, jeśli   Błąd A  lub  Błąd B. Formularz if A; then B; else C; fi wykona  tylko  C, jeśli A zawiedzie. 
Odpowiedź
set world 
Następnie:
if [ "${1%%w*}" ] then echo false else echo true fi 
-  Agresywnie usuń podciąg zaczynający się od 
wz ciągu źródłowego - Jeśli cokolwiek zostało, to ciąg źródłowy nie zaczyna się od drugiego ciągu
 
Lub:
if [ "$1" = "${1#w}" ] then echo false else echo true fi 
-  Usuń 
wz ciągu źródłowego - Porównaj z ciągiem źródłowym
 - Jeśli jest równe, to łańcuch źródłowy nie zaczyna się od drugiego łańcucha