Как позвонить в Redis-Cli с помощью Bash? - PullRequest
0 голосов
/ 22 февраля 2019

Можно ли вызвать redis-cli в bash?

Я пытался:

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
        echo 'keys $line' | redis-cli | sed 's/^/get /' | redis-cli
done < "$1"

Возвращает:

line 4: redis-cli: command not found

Я пытаюсь соответствоватьRedis ключ nt:<numbers> в качестве ключа от входного файла и отображения.

Пример ввода:

nt:60136667431

Я запускаю команду:

./updateT.sh input.txt 

Можно ли как-нибудь вызвать redis-cli get cmd в скрипте для многих значений ключа, переданных какввод

1 Ответ

0 голосов
/ 22 февраля 2019

Помимо проблем с установкой, я думаю, вы хотите что-то вроде

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 подсказывает нет.

...