Bash

將字元串組件分配給變數

  • April 14, 2016

尋找一種更聰明的方式來做我已經在做的事情。

我有一個字元串:“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]"

$$ firstbit $$

echo "[$third]"

$$ thirdbit $$ 等等。

數組不好,因為我更喜歡這個系統的命名變數。不禁想到 awk 中可能有一些東西可以做到這一點,但我對它並不十分熟悉。

有什麼想法嗎?

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

這會將欄位分隔符設置為“。” $var然後告訴 bash 從你的內容提供的輸入中讀入命名變數。

引用自:https://unix.stackexchange.com/questions/276551