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

正则操作结果存入变量后重复出现的技术问题求助

问题分析与解决

你的脚本有两个核心问题:

  1. 循环赋值逻辑错误:每次循环都把secret和value赋值成同一个$name,导致两个变量内容完全重复;
  2. tr命令用法错误:tr不支持正则表达式的*,你写的tr "[[:space:]]*" "\n"会把[、]、:等字符也转换成换行,根本达不到合并多空格为换行的效果。

下面是几种简单有效的修复方案:

方案1:用bash内置字符串截取(最简洁)

直接通过字符串操作提取第一个和第二个字段,自动忽略中间的多空格:

Input="secretname    value"
secret=${Input%% *}  # 从右往左截取到第一个空格,取左侧内容
value=${Input#* }    # 从左往右截取到第一个空格,取右侧内容
echo $secret
echo $value

方案2:用read命令自动分割

read命令默认会把任意数量的空白字符(空格、制表符等)当成分隔符,直接把内容分配给两个变量:

Input="secretname    value"
read secret value <<< "$Input"
echo $secret
echo $value

方案3:用数组存储分割结果(适合多字段场景)

如果后续需要处理更多字段,可以把分割后的内容存到bash数组里,再按需取值:

Input="secretname    value"
names=($Input)  # bash自动按空白分割字符串为数组
secret=${names[0]}
value=${names[1]}
echo $secret
echo $value

内容的提问来源于stack exchange,提问作者Gapi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:03:17