Захватить последнюю выполненную команду из истории как строку и сохранить в переменной в bash

Я пытаюсь захватить последнюю выполненную команду с параметрами и сохранить ее как строку, которая будет записана в файл. Я пробовал использовать fc но это может дать мне только последнюю команду (для меня в любом случае), и я также попытался !!:p который дает правильную команду, когда я печатаю ее, но я не могу ее получить для работы в самой функции. Могу ли я это сделать?

Вот что происходит. arg – это то, что я хочу, чтобы строка была.

 #!/bin/bash foo(){ read HISTNUMVAR < histnum.txt TEMPHNV=$(fc -l 0 | grep -o '^[0-9]*'); if [ $TEMPHNV -ne $HISTNUMVAR ]; then arg=$(***last history command here***); ./write_arg_to_file.sh $arg; fi echo $TEMPHNV > histnum.txt; } 

Скрипт делает все, что мне нужно для этого, кроме того, чтобы захватить правильную команду истории.

3 Solutions collect form web for “Захватить последнюю выполненную команду из истории как строку и сохранить в переменной в bash”

Вероятно, есть более чистый способ, но вы можете получить предыдущую команду из истории с помощью

 prev=$(fc -ln | tail -2 | head -1) 

Мне удалось заставить работать. Из командной строки используйте:

 history 2 | sed 's/^ *[^ ]* *//' | cut -d$'\n' -f1 

Изнутри скрипта используйте:

 arg=$(history 1 | sed 's/^ *[^ ]* *//') 

Это успешно сохраняет команду и любые параметры в виде строки.

Вероятно, вам нужно включить расширение истории в вашем скрипте, поскольку оно по умолчанию отключено для неинтерактивного использования. set -H должен сделать трюк.

Непроверенный, но я предполагаю, что arg="!!" будет делать трюк.

  • Параметр синтаксического анализа скрипта Bash с кавычками
  • Bash: итерация с переменной на линии вывода `ls -1`
  • Сценарий Bash для вставки информации после каждой строки блока данных
  • Список файлов из вложенного zip-файла без лишних
  • Сценарий Bash: файл справки внутри скрипта или в другом файле?
  • Как я могу печатать только определенные команды из сценария bash по мере их запуска?
  • Двойной цикл while (BASH)
  • Нужна команда для отображения эха «успех»
  • Как играть простые заметки, такие как звук ding-dang в терминале
  • Ошибка времени выполнения Awk: недостаточно аргументов
  • Поймите, почему сценарий bash не выполняет основной?
  • Interesting Posts

    Default-Start не содержит уровней запуска

    Запуск tar cmd в неправильном формате, как восстановить

    Почему я наблюдаю за другим поведением эха?

    Как установить DVD 2 и 3 debian?

    Рекомендуемый способ связать команду с окружающей средой?

    Получение Mint MATE (Marco?), Чтобы поместить окно-закрыть X в фактический угол, а не только рядом с ним

    AWK для печати строк, соответствующих пользовательскому вводу, введенному в определенном формате, диапазоне и т. Д.

    Как «слушать» записи nginx в сокет

    найти и заменить значение в строке текста

    Arch Linux не загружается в MacBook Air в режиме UEFI

    Есть ли способ предотвратить отказ плохих дисков от / dev?

    Я хочу сравнить два списка и распечатать вывод разности из списка 1

    прямое выполнение скриптов python

    Как preemption работает в Linux, когда программа имеет таймер менее 4 мс?

    Не удалось обновить / установить завиток («следующие пакеты имеют неудовлетворенные зависимости»)

    Linux и Unix - лучшая ОС в мире.