shell linux 是否可以处理包含在字符串中的变量赋值?

shell linux is it possible to treat variable assignation contained into a string?

我想知道在 shell 中是否可以使用声明为字符串的变量?
我不知道如何明确,所以这是我的问题:

我使用 raspi-gpio 驱动 gpio,我想知道一个 GPIO 示例的状态:
raspi-gpio 得到 21

return 一个字符串:
GPIO 21: level=0 fsel=0 func=INPUT

在这个字符串中有level=0; fsel=0 和 func=INPUT 类似于 shell.

的变量声明

我的问题:
是否可以用最少的行将这 3 个声明视为变量,以便直接使用:
如果 $level == 0 那么...

假设命令 raspi-gpio get 21 returns GPIO 21: level=0 fsel=0 func=INPUT

我们可以把前面不需要的GPIO 21:从冒号(:)字符“拆分”出来删除。

然后将输出通过管道传输到下一个命令,用换行符替换 space。

所以我们有这个命令:

GPIO_OUTPUT=`raspi-gpio get 21`
MYCMD=`echo $GPIO_OUTPUT | cut -d':' -f2 | tr ' ' '\n'`

echo -e "$MYCMD" 的输出将是:


level=0
fsel=0
func=INPUT

这看起来像是一个有效的 bash 变量赋值,所以我们可以 source 它:

source <(echo -e $MYCMD)

完整代码:

GPIO_OUTPUT=`raspi-gpio get 21`
MYCMD=`echo $GPIO_OUTPUT | cut -d':' -f2 | tr ' ' '\n'`
source <(echo -e $MYCMD)
if [ $level -eq 0 ] ; then
  echo "level is zero"
fi