【发布时间】:2019-05-11 10:34:58
【问题描述】:
我有以下从网络服务获得的字符串:
user@server:~# cat test.txt
account|uname|upass|mac|ip|tariff|download|upload
11122|24a43cda22b2|O3v2L2oPE9|24:A4:3C:DA:22:B2|192.168.1.2|7|12582500|2097000
第一行是列名,第二行是它们各自的值。请注意,响应总是返回这两行,而不是更多。我不能使用 JSON 或其他结构化响应格式,这是我必须使用的。
我的目标是通过分隔符 | 拆分所有这些值,并使用列名作为变量名来设置环境变量(或我的 .sh 脚本上下文中的变量)。
到目前为止,我可以使用以下命令将两行与| 分开:
user@server:~# head -n1 test.txt | sed 's/|/\n/g'
account
uname
upass
mac
ip
tariff
download
upload
user@server:~# head -n2 test.txt | sed 's/|/\n/g'
11122
24a43cda22b2
O3v2L2oPE9
24:A4:3C:DA:22:B2
192.168.1.2
7
12582500
2097000
从这里我想定义变量,即。 $account, $uname 等具有以下值:
$account = 11122
$uname = 24a43cda22b2
将它们作为系统环境变量(直到重新启动或下次执行我的 .sh 脚本)或在 shell 脚本本身的上下文中。
【问题讨论】:
标签: bash sed environment-variables