Как позвонить в Redis-Cli с помощью Bash?

Можно ли позвонить redis-cli в баш?

Я старался:

#!/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 ответ

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

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 предлагает не.

Другие вопросы по тегам