쉘프로그래밍 문자열에 관련하여 질문 있습니다.

Gwondori의 이미지

만약 한 문자열("gwj[oiefjioqs[dckmwrjio[vgr")이 주어졌을 때 이 중 "["이 몇 개 인지를 알고 싶을 때 어떻게 합니까?

(참고로... bash가 아닌 오직 sh의 환경에서 입니다. 별로 상관없겠지만 혹시 모르니...ㅎ)

faye의 이미지

bash에선
x="gwj[oiefjioqs[dckmwrjio[vgr"; grep -o "\[" <<< $x |wc -l

sh 에선
x=`echo "gwj[oiefjioqs[dckmwrjio[vgr" | tr '[' '\n' |wc -l`; echo $(($x-1))

다른 나이스한 방법은 다른분이...

bushi의 이미지

공백문자가 없는 문자열 string

string="gwj[oiefjioqs[dckmwrjio[vgr"

( IFS=$'['; set -- ${string}; shift; echo ${#}; )

bash 냐 sh 이냐는 많은 상관이 있습니다.
예를 들면, 공백문자가 있어도 동작하는 다음 스크립트는 bash 에서만 동작합니다.

( y=${string// /x}; z=(${y//[/ }); echo $((${#z[@]}-1)) )