将文本变量切割成 4 个不同变量的正确方法

Proper way to cut text variable into 4 different variables

我有一个包含以下文本的变量。我正在努力弄清楚如何将它分成 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 的每个块都是不同的variable.EX) b1,b2,b3,b4

我想你想要的是将 /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"
}