Захватить последнюю выполненную команду из истории как строку и сохранить в переменной в 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="!!" будет делать трюк.

  • Как получить дамп http на веб-сайте и заголовке как из одной команды curl?
  • Как суммировать числа внутри многих 2D-массивов
  • Какова функция этого «user user @ domain где угодно» в автоматическом скрипте ftp?
  • Как сделать скрипт автоматическим для самостоятельного ввода пароля?
  • Почему я не могу убить тайм-аут, вызванный с помощью скрипта Bash нажатием клавиши?
  • Запуск сценария Python из любого места
  • Как проверить несколько условий в выражении IF
  • Настройка скрипта в поле AMI для создания каталогов - vsftpd, pam, mysql
  • Перенаправление ввода с использованием команды и параметров
  • Значение различных параметров, используемых при запуске сценария оболочки
  • Что означает `AWK = @ AWK @` в сценариях оболочки
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.