Bash拆分具有相同字符的单词

Bash拆分具有相同字符的单词,bash,Bash,如何拆分包含更多相同字符的字符串 例如name=John:address=London。我需要结果name作为变量,而John:address=London作为值 我不知道该怎么做。谢谢。您可以使用 可以使用剪切和命令分组 INPUT='name=@(ADDRESS=(LONDON=(STREET=XY)))' NAME=$(echo "$STR" | cut -d '=' -f 1) INFO=$(echo "$STR" | cut -d '=' -f 2-) 第一行中的单引号防止任何特殊的

如何拆分包含更多相同字符的字符串

例如
name=John:address=London
。我需要结果
name
作为变量,而
John:address=London
作为值

我不知道该怎么做。谢谢。

您可以使用


可以使用剪切和命令分组

INPUT='name=@(ADDRESS=(LONDON=(STREET=XY)))'
NAME=$(echo "$STR" | cut -d '=' -f 1)
INFO=$(echo "$STR" | cut -d '=' -f 2-)
第一行中的单引号防止任何特殊的bash符号被逐字解释。变量
$NAME
接受命令分组的值,由
$()
表示。
$INPUT
被回送到
cut
命令中,其中分隔符
=
-d
标志指定,并指定第一个字段(
-f
标志)

接下来,为变量
$INFO
分配命令分组的值,其中表示结束前的第二个字段。本部分中两个后面的破折号:
-f2-
告诉bash选择第一个
=
符号结束后的所有内容


第一个等号将不在末尾的
$INFO
变量中。

不清楚。您的字符串是否与以下内容完全相同?所有内容都在同一行中,由
分隔?文本完全是:name=John:@(ADDRESS=(LONDON=(STREET=XY)),并且都是同一行。您希望拆分此行的内容/方式是什么?使用用户输入作为变量名是不安全的。如果输入包含拆分为两个字符串的
IFS=…
,该怎么办。第一个字符串“name”,第二个字符串“John:@(ADDRESS=(LONDON=(STREET=XY))”。
INPUT='name=@(ADDRESS=(LONDON=(STREET=XY)))'
NAME=$(echo "$STR" | cut -d '=' -f 1)
INFO=$(echo "$STR" | cut -d '=' -f 2-)