Я хочу только знать, как извлечь значение из переменной в сценарии оболочки. Ниже приведен код:
var=Volume: 0: 100% 1: 100%
или
var=Volume: 0: 35% 1: 35%
Я хочу извлечь из переменной переменную 100 или 35 и сохранить ее в другой переменной. так как я могу это сделать?
Я думаю, что ваша цель немного ошибочна, поэтому я сделал то, что, как я ожидал бы, хотел бы сделать, разделил значения на отдельные значения.
var="Volume: 0: 70% 1: 12%"
source <(echo "$var" | grep -oP '\d+\: \d+' | sed -r 's/([0-9]+)\: /vol\1=/g')
Итак, для каждого входного тома является созданной переменной vol#. В приведенном выше примере echo $vol1 будет 70, а echo $vol2 дает 12.
Если var="Volume: 0: 70% 1: 12% 2: 12% 3: 41% 4: 19%", вы получите пять отдельных переменных.
Если:
var="Volume: 0: 100% 1: 100%"
, то:
, чтобы извлечь первый 100, вы можете использовать:temp=$(awk -F": |%" '{print $3}' <<< "$var")
для извлечения последнего 100 вы можете использовать: temp=$(awk -F": |%" '{print $5}' <<< "$var")
для извлечения обоих 100 вы можете использовать: temp=$(awk -F": |%" '{print $3, $5}' <<< "$var")