Помимо проблем с установкой, я думаю, вы хотите что-то вроде
while read -r line; do
redis-cli keys "$line" |
xargs -n 1 echo redis-cli get
done <"$1"
Выньте echo
, если он печатает вещи, которые выглядят правильно для вас.Если вы можете get
несколько клавиш, возможно, возьмите -n 1
.
С учетом строки ввода nt:60136667431
это выполнит
redis-cli keys nt:60136667431
и передаст каждую строку вывода от этого кredis-cli get
.Так что, если он напечатает foo
и bar
, мы получим
echo redis-cli get foo
echo redis-cli get bar
... где снова очевидно вынут echo
, если это те команды, которые вы хотели бы выполнить.Если вы уберете -n 1
, он соберет столько, сколько сможет, в
echo redis-cli get foo bar
, хотя, если у вас порядка нескольких тысяч результатов, может потребоваться разбить командную строку на несколько команд, потому чтоограничений длины списка аргументов в базовой ОС.(Google ARG_MAX
.) Я понятия не имею, поддерживает ли redis-cli
этот синтаксис;краткий поиск в Google подсказывает нет.