удар с помощью имени файла в качестве входа

Путем помещения кавычек вокруг $cmd, Вы просите, чтобы оболочка для выполнения команды назвала точно это. Нет команды, названной "для x в $ (..."; на самом деле в моей системе, нет даже команды, названной "для" - это - ключевое слово оболочки. Выполнять содержание $cmd, необходимо будет использовать eval.

0
31.01.2017, 22:03
4 ответа

С GNU grep, можно попробовать (непротестированный):

first_u_file=$(hg resolve -l | grep -m1 '^U')
first_u_file=${first_u_file#U }

-mX говорит grep остановиться после печати X строк, 1 в этом случае. $(...) конструкция подобна обратным галочкам, она превращает вывод в строку. Вторая строка удаляет "U" с начала имени файла.

3
28.01.2020, 02:14
  • 1
    , где это должно жить? действительно ли это - псевдоним? жаль о моем минимальном понимании!! –   31.05.2012, 12:14
  • 2
    @Dori можно теперь использовать переменную, как в open -t "$first_u_file" и так далее. –  choroba 31.05.2012, 12:31
  • 3
    +1, большой Спасибо! работает!! Таким образом, что продолжается здесь? Если я ввожу вышеупомянутое first_u_file строки в ударе, это работает, я пытался поместить их в bash_profile, и это не работает. Как может сохранить этот permenantly в некотором файле конфигурации? –   31.05.2012, 12:45
  • 4
    @Dori, Что точно необходимо сохранить сохраненными? –  choroba 31.05.2012, 12:51
  • 5
    @Dori: Функции и команды только возвращают свой статус выхода, не представляют в виде строки. Но можно создать сценарий или функцию, которая печатает (повторяет) значение и затем выполненный open -t $(grab_first_file_name). –  choroba 31.05.2012, 13:26

Простое решение:

u_file=$( hg resolve -l | awk '/^U/{print $2; exit}' )
2
28.01.2020, 02:14

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
1
28.01.2020, 02:14
  • 1
    +1 спасибо, хорошее начало. Таким образом, как я использую это в качестве входа для open -t. Я должен удалить 'U', также я предполагаю –   31.05.2012, 12:11
  • 2
    , который я отредактировал для включения удаления U, я поместил двойные кавычки вокруг имени файла в случае, если это имеет пробелы, если Вам не нужен он, не стесняйтесь удалять из sed замены –   31.05.2012, 12:21
  • 3
    , это, кажется, не удаляет 'U'? Сделайте я выступаю, помещает это в .bash_proile с предыдущим alias ? –   31.05.2012, 12:30
  • 4
    ах, который я вижу, это - переменная, хорошо! выполнение той строки переданных по каналу команд все еще дает мне preceeding U :( –   31.05.2012, 12:40

Вместо просто открытого первый файл, Ваш сценарий мог выполнить итерации по всем неразрешенным файлам:

#!/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-разделения.)

1
28.01.2020, 02:14

Теги

Похожие вопросы