是否可以调用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
在脚本中将许多键值作为输入传递?
最佳答案
撇开安装问题不谈,我猜你想要类似的东西
while read -r line; do
redis-cli keys "$line" |
xargs -n 1 echo redis-cli get
done <"$1"
如果 echo
打印出您认为正确的内容,则将其取出。如果您可以获取
多个 key ,也许可以取出-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
是否支持这种语法;简短的谷歌搜索表明不是。
关于bash - 如何使用 Bash 调用 redis-cli get?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54820303/