bash - 无法拆分存储在包含 $ 作为分隔符的变量中的字符串
问题描述
我正在尝试拆分此字符串并将子字符串存储在单独的变量中,如下所示:
temp="one$two$three$fourfive"
IFS="$" read var1 var2 var3 var4 <<< "$temp"
当我回显 var1 时,我得到“一”,但是当我回显 var2 时,没有输出。当我在每个 $ 符号之前添加一个 '\' 但当我尝试以编程方式执行它时,它会起作用:
echo "$temp" | sed 's/$/\\$/g'
Output: one\$
我怎样才能解决这个问题?
解决方案
您的问题在于带有双引号的原始字符串temp
,其余的字符串被two
解释为shell变量。three
fourfive
在字符串上使用单引号temp
将使变量不会被扩展为空字符串。
temp='one$two$three$fourfive'
还建议使用read
with -r
flag 不要让反斜杠破坏你的字符串
IFS='$' read -r var1 var2 var3 var4 <<< "$temp"
推荐阅读
- c# - 如何在 Identity ASP.NET Core 2.1(Identity Scaffolded)中播种用户角色
- c# - 添加假 I/O 进行测试
- c# - 如何在 Unity 中更改对象的轴心点
- java - 尝试在 Java 中的 Spark 数据集中添加列时出现空指针异常
- c# - 为什么项目找不到 Microsoft.Azure.WebJobs 3.0.0.0
- django - Django:在删除之前更改记录的值
- hyperledger-fabric - Fabric创建通道,api替换程序中的configtxgen?
- gcc - ARMv7 gcc 选项强制本机除法
- vb.net - 未正确读取最后选择的带有复选框的单元格
- azure - Azure 部署的有效预配状态是什么