如何处理ClearCase-exec命令字符串中的shell元字符? 背景

如何处理ClearCase-exec命令字符串中的shell元字符? 背景,clearcase,quotes,Clearcase,Quotes,我正在尝试用label_A更新所有文件以获得label_B。现在,我正在尝试使用find命令,如下所示: ct find . -version 'lbtype (LABEL_A)' -exec 'cleartool mklabel (LABEL_B) $CLEARCASE_XPN' 当我输入上述命令时,返回以下错误: /bin/sh: -c: line 0: syntax error near unexpected token `(' /bin/sh: -c: line 0: `clearto

我正在尝试用label_A更新所有文件以获得label_B。现在,我正在尝试使用find命令,如下所示:

ct find . -version 'lbtype (LABEL_A)' -exec 'cleartool mklabel (LABEL_B) $CLEARCASE_XPN'
当我输入上述命令时,返回以下错误:

/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `cleartool mklabel (LABEL_B) $CLEARCASE_XPN'
文件上说了什么 当我输入
ct man query\u language
时,有关mklabel的说明如下:

将标签EYY6附加到已发布的test.c版本 标记为EYY5

UNIX和Linux:

cleartool mklabel-ver'{lbtype(EYY5)}'EYY6 test.c

在“test.c”版本/main/4上创建了标签“EYY6”

但是,上面的文档仅适用于一个特定的文件。我的案例正在查看带有旧标签的所有文件。这引发了我的问题

问题: 当试图更新特定标签的所有文件时,
mklabel
参数的正确引用是什么?

我认为您的问题实际上是:

问:如何处理ClearCase
-exec
命令字符串中的shell元字符

A:试试这个:

ct find . -version 'lbtype (LABEL_A)' -exec 'cleartool mklabel \(LABEL_B\) $CLEARCASE_XPN'
注:


您可能还需要在“$CLEARCASE\u XPN”中转义“$”。这取决于Clearcase是否需要文本“$Clearcase\u XPN”或扩展的shell值。

您可以在“”(2012)中找到引用策略的示例

但您也需要考虑语法本身:不需要
(xxx)
括号:

 ct find . -version 'lbtype(LABEL_A)' -exec 'cleartool mklabel LABEL_B "$CLEARCASE_XPN"'
lbtype
及其开头

请参见中的示例

  • “(2014年)
  • “”(也是2012年)
  • “”(示例部分)
同样:不应使用
()
。 这意味着您需要首先在该vob中创建标签类型:
(见“”)


然后再次尝试原始的
find-exec mklabel
命令。

如果我尝试了您答案中的方法,我会得到
cleartool:error:Pathname not found“$CLEARCASE\u XPN”。
如果我尝试了您建议的方法(在“S”之前加上“\”),我会得到
cleartool:error:label type”(label\u B)“在VOB”/VOB/vobs/le\u VOB中找不到”而且找不到全局类型定义。
cleartool:Error:无法在“/common/cord\u sup/src/header.h”version”/main/dev/super\u dev/3”上创建label“(label_B)”
这导致了我在@paulsm4的回答中遇到的相同错误:
cleartool:错误:在VOB”/VOB/le\VOB中找不到label_B”并且找不到全局类型定义。
和c
leartool:错误:无法在“/common/cord\u sup/src/header.h”version”/main/dev/super\u dev/3”上创建标签“(label_B)”
@isakob我已经编辑了我的答案。为什么在标签名称周围使用()呢?使用“()”是否违反惯例关于标签名称?@isakob在mklabel的上下文中,这将无法正确解释。在类似
lbtype
的搜索参数上下文中,它非常有用。
label type "(LABEL_B)" not found in VOB "/vobs/le_vob"
cleartool mklbtype -global -nc lbtype:LABEL_B@/vobs/le_vob