Bash 脚本错误:应为整数表达式

use*_*824 6 bash shell-script command-substitution

我在树莓派上的 bash 脚本有问题:

x='gpio -g read 22'

if [ $x -ge 1 ]
then
gpio -g write 23 1
fi
Run Code Online (Sandbox Code Playgroud)

错误是integer expression expected。为什么?

ter*_*don 11

那是因为您正在检查字符串gpio -g read 22是否大于 1。由于gpio -g read 22不是数字,您会收到该错误。

你不解释你正在尝试做的,但我猜你要比较的输出中的gpio命令。为此,您需要将命令括在$()或反引号 ( ``) 中:

x=$(gpio -g read 22)

if [ "$x" -ge 1 ]
then
   gpio -g write 23 1
fi
Run Code Online (Sandbox Code Playgroud)

或者,更简单地说:

[ "$(gpio -g read 22)" -ge 1 ] && gpio -g write 23 1
Run Code Online (Sandbox Code Playgroud)

作业foo='command'没有运行command。该变量foo采用字符串 的值command而不是其输出。