clearcase 뷰가 있는지 테스트하고 존재하는 경우에만 제거 명령을 실행하고 싶습니다. Linux 6.x 환경의 셸 스크립트에서 수행하려고합니다. 나는 내 조건을 한 줄짜리와 완전한 "if"문으로 모두 포맷하려고했지만 제대로 작동하지 않는 것 같다. 구문이 작동하는 경우 한 줄과 전체를 모두 얻으려면 어떻게해야합니까?
다음은 최신 상태의 코드입니다.
#!/bin/ksh
#
STREAMNAME=app_stream_int
PVOB=domain_pvob
VOB=domain_app
viewdir=/opt/local/software/rational/viewstorage
shareddir=/opt/shared/test
storagedir=${shareddir}/viewstorage
projectdir=${shareddir}/projects
ctdir=/opt/rational/clearcase/bin
viewname=$viewdir/test_$STREAMNAME.vws
viewtag=test_$STREAMNAME
echo "STREAMNAME $STREAMNAME - PVOB $PVOB - VOB $VOB"
echo "Removing View if it exists ... \n"
# [ $(${ctdir}/cleartool lsview ${viewname}) ] && { ${ctdir}/cleartool rmview ${viewname}; echo "view removed" }
# [ ${ctdir}/cleartool lsview -long ${viewtag} ] && { ${ctdir}/cleartool rmview ${viewname}; echo "view removed" }
# ${ctdir}/cleartool lsview -long ${viewtag} | grep "Tag" && { ${ctdir}/cleartool rmview ${viewname}; echo "view removed" }
if [ ${ctdir}/cleartool lsview -long ${viewtag} | grep 'Tag' == "0" ]
then
echo "view found"
${ctdir}/cleartool rmview ${viewname}
fi
한 줄짜리 솔루션을 선호하지만 'if'문도 작동합니다.
명령이 UNIX- 종료 코드 규칙을 따르는 경우 일반적인 한 줄은 다음과 같습니다.
command && { success1; success2; } || { failure1; failure2; }
다음 목록 &&
은 명령이 성공할 때 실행해야하는 항목 (로 종료 0
)을 ||
지정하고 , 다음 목록 은 명령이 실패 할 때 실행할 항목을 지정합니다. 목록에서 모든 명령은 마지막 명령을 포함하여 세미콜론으로 끝납니다.
특정 경우에는 작동하는 것처럼 보입니다.
"${ctdir}"/cleartool lsview "${viewname}" && { "${ctdir}"/cleartool rmview "${viewname}" && echo "view removed" || echo "cannot remove view"; }
다음은 표준 명령을 사용하여 실행중인이 패턴의 예입니다.
$ ls foo && { rm -f foo && echo 'removed' || echo 'not removed'; }
ls: cannot access foo: No such file or directory
$ touch foo
$ ls foo && { rm -f foo && echo 'removed' || echo 'not removed'; }
foo
removed
$ sudo touch /foo
$ sudo chmod 600 /foo
$ ls /foo && { rm -f /foo && echo 'removed' || echo 'not removed'; }
/foo
rm: cannot remove ‘/foo’: Permission denied
not removed
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다