Путем помещения кавычек вокруг $cmd
, Вы просите, чтобы оболочка для выполнения команды назвала точно это. Нет команды, названной "для x в $ (..."; на самом деле в моей системе, нет даже команды, названной "для" - это - ключевое слово оболочки. Выполнять содержание $cmd
, необходимо будет использовать eval
.
С GNU grep, можно попробовать (непротестированный):
first_u_file=$(hg resolve -l | grep -m1 '^U')
first_u_file=${first_u_file#U }
-mX
говорит grep
остановиться после печати X строк, 1 в этом случае. $(...)
конструкция подобна обратным галочкам, она превращает вывод в строку. Вторая строка удаляет "U" с начала имени файла.
Простое решение:
u_file=$( hg resolve -l | awk '/^U/{print $2; exit}' )
hg resolve -l | egrep '^U.*' | head -n 1
вывод является первым файлом U
использовать его как open
спор с отброшенным "U":
firstUfile=`hg resolve -l | egrep '^U.*' | head -n 1 | sed -e 's/^U\s+\(.*\)$/"\1"/'`
open -t $firstUfile
open -t
. Я должен удалить 'U', также я предполагаю
–
31.05.2012, 12:11
alias
?
–
31.05.2012, 12:30
Вместо просто открытого первый файл, Ваш сценарий мог выполнить итерации по всем неразрешенным файлам:
#!/bin/bash
while read; do
file="${REPLY#U }"
echo "Opening '$file'"
open -t "$file"
hg resolve -m "$file"
done <( hg resolve -l | grep "^U" )
(Я не знаком с hg
; был бы hg resolve -aln
дайте Вам просто список неразрешенных файлов без "U" префикса? Это покончило бы с потребностью в grep и шаге U-разделения.)
open -t "$first_u_file"
и так далее. – choroba 31.05.2012, 12:31open -t $(grab_first_file_name)
. – choroba 31.05.2012, 13:26