| 10 번 글의 답장글: [shell] if 문 그룹화 |
| 글쓴이: 산이
[홈페이지]
|
글쓴날: 2004년 03월 03일 11:47:25 수(오전) |
조회: 3831 |
[산이]님이 남기신 글:
>에러날 확률이 높음
>
>if [ X`cmd ...` != X ] ; then
>
>
>다음과 같이 수정
>
>if [ X"`cmd ...`" != X ] ; then
>or
>if [ X"`cmd ...`" != "X" ] ; then
>
>
>EOF
========================================
[if 문 그룹화]
1) 기본형
if [ conditions ] ; then
cmd1
else
cmd2
fi
2) 축약형
[ conditions ] && cmd1 || cmd2
or
[ conditions ] && (cmd1) || (cmd2)
or
[ conditions ] && (cmd1;) || (cmd2;)
or
[ conditions ] && ( cmd1 ) || ( cmd2 )
or
[ conditions ] && ( cmd1; ) || ( cmd2; )
or
[ conditions ] && { cmd; } || { cmd2; }
or
[ conditions ] && { cmd;} || { cmd2;}
*주의) {와 }으로 그룹으로 묶을 경우
[ conditions ] && {cmd} || {cmd2} /*** fail ***/
[ conditions ] && {cmd;} || {cmd2;} /*** fail ***/
[ conditions ] && { cmd } || { cmd2 } /*** fail ***/
[ conditions ] && {cmd; } || {cmd2; } /*** fail ***/
* - 반드시 '{' 다음에 빈 공간 하나 이상 필요
* - newline 없이 '}'가 올 경우 반드시 세미콜론(;) 필요
3) command 그룹화 (와 ) 사용
[ conditions ] && (
cmd1
cmd2
cmd3
) || (
cmd4
cmd5
cmd6; cmd7; cmd8
)
4) command 그룹화 {와 } 사용
[ conditions ] && {
cmd1
cmd2
cmd3
} || {
cmd4
cmd5
cmd6; cmd7; cmd8
}
5) 조합형
[ conditions ] && (
cmd1
cmd2
cmd3
) || {
cmd4
cmd5
cmd6; cmd7; cmd8
}
[ conditions ] && (
cmd1
cmd2
cmd3
) || cmd4
* ||(or) 연산을 명령어로 인식하지 않기 위해서
같은 줄 앞에 그룹의 ')' 또는 '}' 가 와야 함
6) 그룹 ( ... ) 와 { .... } 차이
( echo 1; exit 0; ); echo 2 // 결과 1\n2, 서브쉘
{ echo 1; exit 0; }; echo 2 // 결과 1
7) 참고
'[ cmd ]' 또는 '[[ cmd ]]' 의 test cmd 구문에서는
'[ ]' 와 '[[ ]]'를 생략할 수 있음
예)
if cd /path/to/dir 2>/dev/null ; then
echo 'ok DIR'
else
echo 'not DIR'
fi
또는
cd /path/to/dir 2>/dev/null && echo 'ok DIR' || echo 'not DIR'
또는
`cd /path/to/dir 2>/dev/null` && echo 'ok DIR' || echo 'not DIR'
으로 가능함.
(에러 출력 처리에 주의)
|
이전글 : [shell] if 문에서 문자열 비교시
다음글 : [images] convert GIF/JPG/PNG/BMP/EPS/...
|
from 211.44.63.181
JS(Redhands)Board 0.4 +@
|