만약 한 문자열("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)) )
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
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
bash 냐 sh 이냐는 많은 상관이 있습니다.
예를 들면, 공백문자가 있어도 동작하는 다음 스크립트는 bash 에서만 동작합니다.
댓글 달기