С GNU grep, можно попробовать (непротестированный):
first_u_file=$(hg resolve -l | grep -m1 '^U')
first_u_file=${first_u_file#U }
-mX
говорит grep
остановиться после печати X строк, 1 в этом случае. $(...)
конструкция подобна обратным галочкам, она превращает вывод в строку. Вторая строка удаляет "U" с начала имени файла.
Возможно, слишком большой из молотка для Вашего особого случая, но этого инструмента может на самом деле открыть возможности, которые Вы никогда не воображали прежде. Смотрите на Марионетку. Это - инструмент управления конфигурацией, который позволяет Вам управлять своими клиентами централизованным и агностическим ОС способом.
В Марионетке Вы удостоверяетесь, что определенный пакет установлен путем записи чего-то подобного следующему в конфигурационном файле (на сервере):
$package_name = $operatingsystem ? {
debian => 'apache-for-debian',
redhat => 'apache-for-rhel',
default => 'apache',
}
package{$package_name: ensure => installed}
Что касается Вашего варившего домом Сценария PHP, можно подвергнуть его дереву Марионетки на сервере и сделать, чтобы клиенты загрузили его чем-то подобным следующему:
file{'my_script':
ensure => file, #as opposed to directory
path => '/path/on/client/myscript',
mode => 0755,
source => 'puppet:///path/on/server/myscript',
}
Вы можете периодически иметь Марионеточную проверку на изменения в конфигурации на сервере и зеркально отразить их на локальном хосте (клиент). Это означает, что, поддерживая Ваш Сценарий PHP после того, как установка также централизована.