我想测试是否存在清除案例视图,并且仅在存在清除命令的情况下执行remove命令。我正在尝试从Linux 6.x环境中的Shell脚本执行此操作。我试图将条件格式设置为单行格式以及完整的“ 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
我更喜欢单线解决方案,但是“如果”声明也可以。
如果该命令遵循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] 删除。
我来说两句