寻找一种更聪明的方法来完成我已经在做的事情。
我有一个字符串:“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
。