#java #bash #redis #testcontainers
Вопрос:
Я хотел бы запускать конвейерные команды в docker с помощью execInContainer
метода testcontainer. Я могу выполнить одну команду (например execInContainer("redis-cli", "keys", "*")
, но при предоставлении канала (например execInContainer("redis-cli", "keys", "*", "|", "grep", "-v", "test")
) он считывает ее так, как она принадлежит предыдущей команде ( ERR wrong number of arguments for 'keys' command
). Чего я хочу добиться, так это удалить все ключи из redis, кроме одного. Полный сценарий выглядит следующим образом redis-cli keys * | grep -v test | xargs redis-cli DEL
. Есть идеи, как я мог бы это сделать?
Ответ №1:
Я поднял этот вопрос с командой testcontainers.
Похоже, ты можешь это сделать:
execInContainer("sh", "-c", "foo | bar")
Не могли бы вы, пожалуйста, попробовать это? Это должно сработать.