Правильный способ разрезания текстовой переменной на 4 разные переменные - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть переменная с текстом ниже.Я изо всех сил пытаюсь выяснить, как разделить его на 4 разных переменных.

[Текст хранится в $ t_config]

session writelock

random command

random command

random command

session writeunlock

session writelock

random command

random command

session writeunlock

session writelock

random command

random command

session writeunlock

session writelock

random command

random command

session writeunlock

Я могу разбить первый, но не уверен, как сделать остальные три.Я сделал это следующим образом:
x1=$(echo "$t_config"| sed '/session writeunlock/q')

Будет ли это легче с строкой чтения IFS?

Любая помощь или советы будут оценены

РЕДАКТИРОВАТЬ 1)$t_config загружается из файла.

Каждый блок writelock-writeunlock будет иметь свою переменную .EX) b1, b2, b3, b4

1 Ответ

0 голосов
/ 15 февраля 2019

Я думаю, что вы хотите, чтобы каждый блок строк между / session writelock / и / session writeunlock / был назначен переменной b1, b2 и т. Д.

Это один из способов сделать это.Как уже отмечали комментаторы, построчное чтение, вероятно, более эффективно.Однако я предположил, что вам нужно использовать переменную.

#!/bin/sh

t_config=`cat moo`

echo "$t_config" | {
        INDEX=0
        NL="
"
        while read LINE; do
                case $LINE in
                        ("session writelock")
                                OUTPUT=""
                                ;;
                        ("session writeunlock")
                                let INDEX=$INDEX+1
                                VAR="b$INDEX"
                                eval "$VAR='$OUTPUT'"
                                OUTPUT=""
                                ;;
                        (*) OUTPUT="$OUTPUT$NL$LINE";;
                esac
        done

        # now do something with the variables
        echo "b1:$b1"
        echo "b2:$b2"
        echo "b3:$b3"
        echo "b3:$b4"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...