
Как мне заставить это работать в 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")