Как позвонить в 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 предлагает не.