命令输出中的变量名称

命令输出中的变量名称

我有一些字符串,并且想要在冒号“:”上分割,分配变量的名称来自左侧部分,值来自右侧部分。例如:

echo "Title: Some title" | sed 's/:.*//'

给我想要的变量名称“Title”,并且:

echo "Title: Some title" | sed 's/.*: //'

给我值“一些标题”。

我的问题是如何通过上述命令的输出分配名为“Title”的变量。

我可以分配值,$(echo "Title: Some title" | sed 's/.*: //)但找不到如何分配名称

答案1

这是一件相当奇怪的事情,但我想你可以构造一个export声明:

$ export $(echo "Title: Some title" | sed 's/:.*//')="$(echo "Title: Some title" | sed 's/.*: //')"
$ echo $Title
Some title

答案2

根据它的使用方式和你的 bash 版本,你可能最好使用关联数组

如果做不到这一点,我建议你假的

为了完整起见,您实际上可以使用 来执行此操作eval请注意,eval 很危险,除非必要,否则不应使用它。

eval "${string/: /=\"}\""

答案3

也许这会给出预期的结果

#!/bin/sh
export Variablename="$(echo "Title: Some title" | awk -F':' '{ print $1}')=\"$(echo "Title: Some title" | awk -F':' '{ print $2 }' | sed -e 's/^[[:blank:]]*//g')\""

输出 :

标题=“一些标题”

相关内容