将字符串组件分配给变量

将字符串组件分配给变量

寻找一种更聪明的方法来完成我已经在做的事情。

我有一个字符串:“firstbit.secondbit.thirdbit.fourthbit.fifthbit.sixthbit”

句点之间的内容会发生变化,但字符串中的分隔位置很重要。

该字符串有时仅包含 3 个部分:“firstbit.secondbit.thirdbit”

我需要将每个部分分配给不同的变量。所以,我目前正在使用这个丑陋的东西:

#!/bin/sh
var="firstbit.secondbit.thirdbit.fourthbit.fifthbit.sixthbit"

first="$(echo $var | cut -d'.' -f1 )"
second="$(echo $var | cut -d'.' -f2 )"
third="$(echo $var | cut -d'.' -f3 )"
fourth="$(echo $var | cut -d'.' -f4 )"
fifth="$(echo $var | cut -d'.' -f5 )"
sixth="$(echo $var | cut -d'.' -f6 )"

我希望的是更像:

echo "$var" | (magic command to assign values to variables here) first second third fourth fifth sixth

这样以后我就可以:

echo "[$first]"

[第一位]

echo "[$third]"

[第三位]

等等。

数组不好,因为我更喜欢这个系统的命名变量。忍不住想 awk 中可能有一些东西可以做到这一点,但我对它并不熟悉。

有什么想法吗?

答案1

IFS=. read -r first second third fourth fifth <<< "$var"

这将字段分隔符设置为“.”。然后告诉 bash 从您的内容提供的输入中读入命名变量$var

相关内容