Действительно ли я могу сослаться на команду прежде '&&' после '&&'

Не видя образец входа и по крайней мере ядра Вашего сценария, я могу только размышлять, что URL вмешиваются со злорадными йети пространства. Они известны за это безответственное поведение - Ваша единственная надежда состоит в том, чтобы назвать область 51 технической поддержкой.

Или, возможно, обеспечьте образец и сценарий здесь. Сумасшедшая идея, но это могло бы помочь. Анонимизируйте или запутайте их при необходимости, но не портя структуру XML-файла.

Я собираюсь предположить, что Вы используете простой regexp и указываете, что как правило, "анализируя" XML с regexps не хорошая идея - это хрупко, и легко перепутанный допустимым но неожиданным входом... пользуются xml парсинг библиотеки или функции или даже инструмента как xml2 для извлечения URL из XML-файлов.

Обратите внимание также, что, как подсказал Охотником на оленей выше, если URL содержат какие-либо пробелы или знаки пунктуации с особым значением к оболочке (например, &, ?, *, и многие другие), необходимо будет заключить в кавычки или выйти из URL перед использованием его на wget командной строке. Как очень простой пример, использовать wget "$URL" вместо просто wget $URL - отметьте двойные кавычки вокруг переменной $URL.

10
07.09.2014, 21:37
4 ответа

С помощью (t)csh, bash или zsh расширения истории вы могли бы написать:

vagrant up && !#:0 ssh

Но, серьезно, вы бы не

.
23
27.01.2020, 19:59

Ты мог бы сделать:

eval vagrant\ {'up &&',ssh}

, но это не облегчило бы задачу.

Вы всегда можете сделать функцию

doall() {
  cmd=$1; shift
  for arg do
    "$cmd" "$arg" || return
  done
}

А потом:

doall vagrant up ssh
13
27.01.2020, 19:59
 v=vagrant; $v up && $v ssh

Это может быть близко к тому, что вы ищете.

Вот функция, которая - в bash - выведет первое слово в позиции команды для текущей составной команды:

rc() { $(set -f; unset IFS
        set -- $(history 1)
        IFS="(){};|'\\\"&#"
        set \ $2;IFS=\ ;set -- $*
        printf %s "$1") "$@"; }

С этим можно сделать:

vagrant up && rc ssh

Пример:

echo up && rc ssh

OUTPUT

up
ssh

или....

set -x
(echo);rc 'times two'

OUTPUT

+ echo

+ rc 'times two'
++ set -f
++ unset IFS
+++ history 1
++ set -- 549 '(echo);rc' ''\''times' 'two'\'''
++ IFS='(){};|'\''\"&#'
++ set ' ' echo '' rc
++ IFS=' '
++ set -- echo rc
++ printf %s echo
+ echo 'times two'
times two
4
27.01.2020, 19:59

Не ответ напрямую, но, возможно, стоит обратить внимание на две альтернативы (слишком много для комментария):

  1. Псевдоним

    Если вы многократно используете команду, вы можете вставить псевдоним в ваш ~/.bashrc

    alias vassh="бродяга вверх && бродяга ssh".
    
  2. История командной строки

    Ctrl+R давайте выполним поиск предыдущих команд. Это будет намного быстрее, чем использование переменных...

4
27.01.2020, 19:59

Теги

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