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
我想知道在 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