Как запустить несколько команд Unix за один выстрел
Я пытаюсь выполнить несколько команд за один выстрел, но, к моему удивлению, выполняется только первая команда, а остальные пропускаются. И команда
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 ответа
Не использовать cleartool setview
: он разветвляет текущую оболочку в подоболочке, поэтому остальная часть пропускается при выполнении в одну строку.
И именно поэтому он работает, когда выполняется один за другим (последние два выполняются в подоболочке)
Всегда работайте с полным путем динамического представления: /view/aview/vobs/avob/...
, вместо setview
(который вам не нужен).
Если вы должны использовать cleartool setview
затем используйте его вместе с -exec
вариант ( как в этом ответе):
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:
ОП спрашивает:
Скажи мой взгляд по имени
humanbeing
вuniverse/planet/earth/humanbeing.vws
Как я могу использовать
startview
команда?
Это что-то вроде
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
) myapp/WEB-INF/scripts
присутствует в/view/humanbeing/vobs/<avob>
Не пытайтесь делать какие-либо ссылки в /vobs
: /vobs
является специальной точкой монтирования MVFS (Multi-Version FileSystem), а не обычной папкой.
Убедитесь, что ваше веб-приложение ищет приложения по другому пути, чем /vobs
,
Я не уверен, что именно вы пытаетесь сделать, так как это кажется частью большого проблемного пространства, но...
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>
См. Справочную страницу KSH для получения дополнительной информации о выполнении Unix-команд "за один раз".
Точка с запятой (;) вызывает последовательное выполнение предыдущего конвейера; амперсанд (&) вызывает асинхронное выполнение предыдущего конвейера (т. е. оболочка не ожидает завершения этого конвейера). Символ |& вызывает асинхронное выполнение предыдущего конвейера с двусторонним каналом, установленным в родительскую оболочку; ... Символ && ( | |) приводит к выполнению списка, следующего за ним, только если предыдущий конвейер возвращает нулевое (ненулевое) значение.
У меня нет доступа к Clearcase, чтобы попробовать что-то, но иногда из прошлого опыта вам понадобится RTFM, такие инструменты, которые принимают либо обратный канал, либо файл сценария ввода, ищут в документации синтаксис, такой как:
Cleartool < echo
command_sequence
echo
command_sequence | Cleartool -
или же
Cleartool -f
входной файл или последовательность команд или
Cleartool -c
входной файл или последовательность команд или
Cleartool run
входной файл или последовательность команд или
Если вы обнаружите, что какой-либо из вариантов выше, делает свое дело, пожалуйста, сообщите нам об этом, разместив свой собственный ответ, чтобы следующий человек с проблемой мог получить выгоду.