我想知道是否可以在 shell 中使用宣告為字串的變數?
我不知道如何明確,所以這是我的問題:
我使用 raspi-gpio 驅動 gpio,我想知道一個 GPIO 示例的狀態:
raspi-gpio get 21
回傳一個字串:
GPIO 21:level=0 fsel=0 func=INPUT
在這個字串中有 level=0; fsel=0 和 func=INPUT 類似于 shell 的變數宣告。
我的問題:
是否可以用最少的行將這 3 個宣告視為變數,直接使用:
如果 $level == 0 那么...
uj5u.com熱心網友回復:
假設命令raspi-gpio get 21回傳GPIO 21: level=0 fsel=0 func=INPUT
我們可以GPIO 21:通過從冒號 (:) 字符中“拆分”它來洗掉前面不需要的。
然后將輸出傳遞到下一個命令以用換行符替換空格。
所以我們有這個命令:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465349.html
