You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用命令替换获取Redis配置文件路径后执行cat命令报错,怀疑Shell丢弃字符串的问题求助

使用命令替换获取Redis配置文件路径后执行cat命令报错,怀疑Shell丢弃字符串的问题求助

我在尝试通过Redis CLI获取配置文件路径后直接用cat查看该文件时遇到了奇怪的报错,具体操作和输出如下:

[root@es01 ~]# redis-cli  -h IP_ADDRESS -p 6380 -a admin info 2>/dev/null|grep config_file|cut -d: -f2
/opt/redis/7.0.5/cluster/redis-6380.conf

[root@es01 ~]# cat $(redis-cli  -h IP_ADDRESS -p 6380 -a admin info 2>/dev/null|grep config_file|cut -d: -f2)
: No such file or directoryer/redis-6380.conf

从错误信息能看出来,配置文件路径被截断了,最后只显示了er/redis-6380.conf,前面的部分莫名其妙丢失了,怀疑是Shell在解析命令替换结果时出了问题,有没有大佬能帮忙看看怎么解决?


可能的原因和解决方案

这种情况大概率是因为redis-cli输出的配置路径里包含了不可见的控制字符(比如回车符\r或者多余的换行符),导致Shell解析路径时出错。你可以按下面的步骤排查和解决:

  1. 先检查输出中的隐藏字符
    用cat -A命令可以显示所有不可见字符,比如回车符会显示为^M,换行符显示为$:

    redis-cli -h IP_ADDRESS -p 6380 -a admin info 2>/dev/null | grep config_file | cut -d: -f2 | cat -A
    
  2. 清理输出中的隐藏字符
    如果发现有多余的回车或换行,用tr命令删除它们,确保路径是干净的单行字符串:

    cat $(redis-cli -h IP_ADDRESS -p 6380 -a admin info 2>/dev/null | grep config_file | cut -d: -f2 | tr -d '\r\n')
    
  3. 更稳妥的方式:先把路径存到变量中
    先将路径赋值给变量,确认路径正确后再执行cat,这样更容易排查问题:

    # 先获取并清理路径,存入变量
    REDIS_CONF=$(redis-cli -h IP_ADDRESS -p 6380 -a admin info 2>/dev/null | grep config_file | cut -d: -f2 | tr -d '\r\n')
    # 打印变量确认路径
    echo "当前Redis配置文件路径:$REDIS_CONF"
    # 执行cat命令
    cat "$REDIS_CONF"
    

备注:内容来源于stack exchange,提问作者redliquid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:32:33