Разбейте строковую переменную и используйте только раздел bash - PullRequest
1 голос
/ 28 апреля 2020

У меня есть переменная, как показано ниже.

1.1.0.1580308800316

Есть ли способ получить 1.1.0 в качестве отдельной переменной и 1580308800316 в качестве отдельной переменной? Как и var1=1.1.0 and var2=1580308800316

Я попробовал следующую строку кода, которую смог найти.

echo 1.1.0.1580308800316 | fold -w6

Но это не принесло мне желаемого результата.

``

Ответы [ 2 ]

4 голосов
/ 28 апреля 2020

Возможно со стандартной оболочкой POSIX:

#!/usr/bin/env sh

version='1.1.0.1580308800316'

var1="${version%.*}"
var2="${version##*.}"

printf 'Version: %s\n' "$version"
printf 'Var1: %s\n' "$var1"
printf 'Var2: %s\n' "$var2"

Вывод:

Version: 1.1.0.1580308800316
Var1: 1.1.0
Var2: 1580308800316
2 голосов
/ 28 апреля 2020

Хотя ИМХО вы можете создать 2 элемента из вашего текста и сохранить в 2 элементах массива, а затем использовать элементы этого массива один за другим, поскольку OP настаивал на том, чтобы иметь только переменные, поэтому вы могли использовать cut команда для этого.

first_var=$(echo "1.1.0.1580308800316"  | cut -d'.' -f1-3)
second_var=$(echo "1.1.0.1580308800316"  | cut -d'.' -f4)
...