Вот что я только что проверил, чтобы получить один базовый уровень из всех базовых базовых уровней:
$ res=`cleartool lsstream -fmt "%[found_bls]CXp" -view $VIEW_NAME | tr -s " " "\\012" | grep $yourBaselineName| sed -e "s/.*://" -e "s/@.*//"`
(установите $yourBaselineName
на соответствующее имя, которое вы хотите извлечь)
Основная трудность связана с тем фактом, что lsstream -fmt "%[found_bls]CXp"
перечислит все базовые линии фундамента в одной и той же строке вывода (поэтому выходные данные представляют собой только одну строку базовых имен, разделенных запятой).
Сначала нужно разбить строку на несколько.
Смотрите " Как разбить одну строку на несколько строк в оболочке bash? ": это часть tr -s " " "\\012"
вышеуказанной команды.
Затем вам нужно удалить то, что предшествует, и следовать базовому имени:
baseline:aBaselineName@/vobs/YourPVob
Часть sed
приведенной выше команды может сделать это:
sed -e "s/.*://" -e "s/@.*//"
(два регулярных выражения удаляют все до ':
' и после '@
')