Доступ к последней команде истории внутри функции

Использовать сопоставление регулярных выражений bash и получить доступ к встроенному массиву BASH _REMATCH

s="hello world 15 42"
re='.*([0-9]+) ([0-9-]+)'
if [[ $s =~ $re ]]; then
    for key in "${!BASH_REMATCH[@]}"; do 
        printf "%s\t%s\n" "$key" "${BASH_REMATCH[$key]}"
    done
fi
0   hello world 15 42
1   5
2   42
0
22.11.2019, 21:53
1 ответ

Решение найдено:

f()(echo $(history 2 | head -n1 | cut -d' ' -f2-))

или используя fc, как предложил Г. -Ман:

f()(fc -ln -1)

испытание:

$ echo 123*
123*
$ f
echo 123*
1
28.01.2020, 02:38

Теги

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