bash-скриптинг - вывод числа на экран в результате предыдущей команды - PullRequest
3 голосов
/ 30 июня 2011

Я пытаюсь автоматизировать копирование измененных файлов в список изменений, но мне нужна помощь в получении номера сгенерированного списка изменений.Я предполагаю, что это, вероятно, прямая вещь для сценариев bash - но я просто еще не понимаю !! ...

В основном я выполняю команду

p4 change -o | sed 's/<enter description here>/This is my description./' | p4 change -i

КакВ результате я вывожу на экран что-то вроде строки ниже (очевидно, число меняется)

Change 44152 created.

Что я хочу, так это иметь возможность записывать сгенерированное число в переменную, которую я затем могу использовать востальная часть моего сценария (чтобы добавить будущие файлы в тот же список изменений и т. д.) ...

Может кто-нибудь посоветовать?

Спасибо

Ответы [ 5 ]

4 голосов
/ 30 июня 2011

как это

change=`p4 change -o | sed 's/<enter description here>/This is my description./' | p4 change -i|cut -d f2`

echo $change

РЕДАКТИРОВАТЬ: За последний комментарий @Enigma

Если вы хотите использовать переменную оболочки в команде sed, используйте кавычку для кавычек "" вместо одинарных кавычек '' для команды sed. Как ниже

sed "s/<enter description here>/ updating $change form/"

Результат "обновление формы 44152" ($ change содержит значение 44152)

3 голосов
/ 30 июня 2011

Вы можете захватить вывод команды с помощью символа `.

myVariable=`myCommand`

Вы можете использовать awk для получения 2-го столбца данных, числовой части.

myVariable=`originalCommand|awk '{print $2}'`

Теперь myVariable будет вашим номером, 44152.

2 голосов
/ 30 июня 2011

вы могли бы использовать вырезать. Вот еще одна связанная запись stackoverflow:

использовать пробел в качестве разделителя с командой вырезания

1 голос
/ 30 июня 2011

Я бы использовал что-то вроде этого

echo "Change 44152 created." | tr -d 'a-zA-Z .'
0 голосов
/ 06 июля 2011

Если вы хотите получить последний сгенерированный список изменений, вы также можете набрать

variable=`p4 counter change`

, но это будет работать, только если никто не сделал список изменений после того, как вы создали свой.

...