Bash
將字元串組件分配給變數
尋找一種更聰明的方式來做我已經在做的事情。
我有一個字元串:“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 從你的內容提供的輸入中讀入命名變數。