Инициализация переменной с помощью внутренней переменной

Инициализация переменной с помощью внутренней переменной

Как мне заставить это работать в ksh?

variable1="$(strings /.sh_history | grep '^\user' | tail -1 | cut -d' ' -f2)"
variable2="$(command ${variable1})"

По сути, я хотел бы использовать variable1 как строку для использования с командой объявления переменной.

ОБНОВЛЕНИЕ: Проблема на самом деле не была связана с моим синтаксисом. Ошибка была из-за форматирования текста, что создало проблему. Я вырезал, используя модификаторы текста в качестве разделителей, и смог успешно извлечь данные. Я использовал оба рекомендованных решения, чтобы сделать свой скрипт чище.

решение1

Если вы хотите сохранить шелл-код, используйтефункции:

function1() { strings /.sh_history | grep "$@"; }
variable1=$(function1 foo)

решение2

Использовать eval:

variable1='strings /.sh_history | grep'
variable2=$(eval "$variable1 foo")

Связанный контент