如何使用Bash调用redis-cli get?

时间:2019-02-22 04:56:20

标签: bash redis 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 个答案:

答案 0 :(得分:0)

除了安装问题之外,我猜你想要类似的东西

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。因此,如果打印出foobar,我们将得到

echo redis-cli get foo
echo redis-cli get bar

...如果您想最终执行这些命令,显然可以再次取出echo。如果您取出-n 1,它将尽可能多地收集到

echo redis-cli get foo bar

尽管如果您拥有成千上万个结果,由于底层OS中的参数列表长度限制,可能仍需要将命令行分成多个命令。 (Google ARG_MAX。)我不知道redis-cli是否支持此语法;简短的谷歌搜索表明不是。