LINUX.ORG.RU

История изменений

Исправление AKonia, (текущая версия) :

А почему не сделать что-то вроде:

-- вводим два контекста - команды и оболочки, \
-- первые копят цепочку, второй исполняет, 
-- метатабличками перегружаем `_G`, и контексты до 
-- получения следующего синтаксиса:

ls{ "-la" } | grep { "lua" } | wc { "-l"} | shell {}

cat { in = "/etc/passwd" } | sort { out = "sorted.txt"} | shell {}

Вроде же симпатичнее и больше на обычный bash похоже(чтобы проще было примеры переписывать). То что вы показали больше как по мне похоже на эдакое расширение io.pipe()/os.execute(), который тогда уж проще расширить аналогом луашных регулярок, чем приведённый функциональный стиль использовать с кучей избыточных кавычек. Если же тюнить ваш пример, то как минимум лучше вытянуть stdin/stdout как нарушителей контейнера и вместо аргументов функций использовать таблицы, в которых и переопределять stdin/stdout

Исправление AKonia, :

А почему не сделать что-то вроде:

-- вводим два контекста - команды и оболочки, \
-- первые копят цепочку, второй исполняет, 
-- метатабличками перегружаем `_G`, и контексты до 
-- получения следующего синтаксиса:

ls{ "-la" } | grep { "lua" } | wc { "-l"} | shell {}

cat { in = "/etc/passwd" } | sort { out = "sorted.txt"} | shell {}

Вроде же симпатичнее и больше на обычный bash похоже(чтобы проще было примеры переписывать). То что вы показали больше как по мне похоже на эдакое расширение io.pipe()/os.execute(), который тогда уж проще расширить аналогом луашных регулярок, чем приведённый функциональный стиль использовать с кучей избыточных кавычек. Если же тюнить ваш пример, то как минимум лучше вытянуть stdin/stdout как нарушителей контейнера и вместо аргументов функций использовать таблицы

Исправление AKonia, :

А почему не сделать что-то вроде:

-- вводим два контекста - команды и оболочки, \
-- первые копят цепочку, второй исполняет, 
-- метатабличками перегружаем `_G`, и контексты до 
-- получения следующего синтаксиса:

ls{ "-la" } | grep { "lua" } | wc { "-l"} | shell {}

cat { in = "/etc/passwd" } | sort { out = "sorted.txt"} | shell {}

Вроде же симпатичнее и больше на обычый bash похоже(чтобы проще было примеры переписывать). То что вы показали больше как по мне похоже на эдакое расширение io.pipe()/os.execute(), который тогда уж проще расширить аналогом луашных регулярок, чем приведённый функциональный стиль использовать с кучей избыточных кавычек. Если же тюнить ваш пример, то как минимум лучше вытянуть stdin/stdout как нарушителей контейнера и вместо аргументов функций использовать таблицы

Исходная версия AKonia, :

А почему не сделать что-то вроде:

-- нужно ввести два контекста - команды и оболочки, \
-- первые копят цепочку, второй исполняет, 
-- метатабличками перегружаем `_G`, и контексты до 
-- получения следующего синтаксиса:

ls{ "-la" } | grep { "lua" } | wc { "-l"} | shell {}

cat { in = "/etc/passwd" } | sort { out = "sorted.txt"} | shell {}

Вроде же симпатичнее и больше на обычый bash похоже(чтобы проще было примеры переписывать). То что вы показали больше как по мне похоже на эдакое расширение io.pipe()/os.execute(), который тогда уж проще расширить аналогом луашных регулярок, чем приведённый функциональный стиль использовать с кучей избыточных кавычек. Если же тюнить ваш пример, то как минимум лучше вытянуть stdin/stdout как нарушителей контейнера и вместо аргументов функций использовать таблицы