如何一次性运行多个Unix命令

时间:2015-08-06 20:53:41

标签: unix ssh clearcase jsch cleartool

我试图一次执行多个命令,但令我惊讶的是只有第一个命令被执行而其余命令被跳过。命令是

cleartool setview view1234 ; cleartool setactivity activity456 ; cd /vobs/app/src/epw/WEB-INF/scripts ; pwd

以上命令的输出是

You can now run 'clearquest' to start Rational ClearQuest.

但我希望看到以下3行输出:

You can now run 'clearquest' to start Rational ClearQuest.
Set activity "activity456" in view "view1234".
/vobs/app/src/epw/WEB-INF/scripts

我的搜索工作通过用&符号(&)或管道(|)替换分号(;)来为同一命令产生更多变化,但似乎没有任何工作。

有关如何运行上述多个命令的任何建议/想法?

3 个答案:

答案 0 :(得分:3)

不要在子shell中使用cleartool setviewit forks the current shell,这就是为什么在单行执行时会跳过其余内容。
这就是为什么它一个接一个地执行(最后两个在子shell中执行)

始终使用full path of the dynamic view/view/aview/vobs/avob/...,而不是setview(您不需要)。

如果您必须使用cleartool setview,请将其与-exec选项(as in this answer)一起使用:

cleartool setview -login -exec "command 1; command 2; command 3" view_tag

在你的情况下:

cleartool setview -exec 'cleartool setactivity activity456 ; cd /vobs/app/src/epw/WEB-INF/scripts ; pwd' view1234 

没有setview:

OP问道:

  

说我名为humanbeing的观点位于universe/planet/earth/humanbeing.vws

     

如何使用 startview command
  是否像

cleartool startview universe/planet/earth/humanbeing
  

cleartool startview cd universe/planet/earth/humanbeing
  

在这两种情况下,它都显示错误:无法设置视图标记universe/planet/earth/humanbeing

确定,执行cleartool lsview -s | grep humanbeing:会为您提供视图标记。

应该是:

cleartool startview humanbeing
cd /view/humanbeing/vobs/<avob>

universe/planet/earth/humanbeing.vws是视图存储,而不是视图标记。

确保

  • 已装入(cleartool mount /vobs/avob
  • {li> myapp/WEB-INF/scripts出现在/view/humanbeing/vobs/<avob>

请勿尝试在/vobs中执行任何符号链接:/vobs是一个特殊的MVFS(多版本文件系统)安装点,而不是常规文件夹。
确保您的网络应用程序在/vobs以外的其他路径中搜索应用程序。

答案 1 :(得分:0)

我不确定你要做什么,因为它似乎是一个更大的问题空间的一部分,但是...

cleartool setact -view view1234 activity456 

用于在视图中设置活动,然后

cd /view/view1234/vobs/app/src/epw/WEB-INF/scripts

会帮助你。或者将它们打在一起以获得结果:

cleartool setact -view view1234 activity456 && cd /view/view1234/vobs/app/src/epw/WEB-INF/scripts && pwd

声明<stmt1> && <stmt2>if [[ <stmt1> ]]; then <stmt2>

的简写

有关执行unix命令的更多信息,请参阅KSH man page&#34;一次性拍摄&#34;。

分号(;)导致前一个管道的顺序执行; &符号(&amp;)导致前一个管道的异步执行(即,shell不等待该管道完成)。符号|&amp;使用建立到父shell的双向管道导致前一个管道的异步执行; ......符号&amp;&amp; (| |)仅在前面的管道返回零(非零)值时才会执行其后面的列表。

答案 2 :(得分:0)

我无法访问Clearcase进行尝试,但有时从过去的经验来看,您将需要RTFM,这些工具可以接受反向管道或输入脚本文件,请查看文档中的语法等为:

Cleartool < echo command_sequence

echo command_sequence | Cleartool -

Cleartool -f inputfile 命令序列

Cleartool -c inputfile 命令序列

Cleartool run inputfile 命令序列

如果您确实找到了上述的一些变体,请通过发布您自己的答案告诉我们,以便下一个有问题的人可以受益。