만약 한 문자열("gwj[oiefjioqs[dckmwrjio[vgr")이 주어졌을 때 이 중 "["이 몇 개 인지를 알고 싶을 때 어떻게 합니까?
(참고로... bash가 아닌 오직 sh의 환경에서 입니다. 별로 상관없겠지만 혹시 모르니...ㅎ)
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))
다른 나이스한 방법은 다른분이...
공백문자가 없는 문자열 string
string="gwj[oiefjioqs[dckmwrjio[vgr"
( IFS=$'['; set -- ${string}; shift; echo ${#}; )
bash 냐 sh 이냐는 많은 상관이 있습니다. 예를 들면, 공백문자가 있어도 동작하는 다음 스크립트는 bash 에서만 동작합니다.
( y=${string// /x}; z=(${y//[/ }); echo $((${#z[@]}-1)) )
bash에선 x="gwj[oiefjioqs[dckmw
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))
다른 나이스한 방법은 다른분이...
공백문자가 없는 문자열
공백문자가 없는 문자열 string
( IFS=$'['; set -- ${string}; shift; echo ${#}; )bash 냐 sh 이냐는 많은 상관이 있습니다.
예를 들면, 공백문자가 있어도 동작하는 다음 스크립트는 bash 에서만 동작합니다.
( y=${string// /x}; z=(${y//[/ }); echo $((${#z[@]}-1)) )