Bash script error: integer expression expected
16,843
That's because you are checking whether the string gpio -g read 22
is greater than 1. Since gpio -g read 22
is not a number, you get that error.
You don't explain what you are trying to do but I'm guessing you want to compare the output of the gpio
command. To do that, you need to enclose the command in $()
or backticks (``
):
x=$(gpio -g read 22)
if [ "$x" -ge 1 ]
then
gpio -g write 23 1
fi
Or, more simply:
[ "$(gpio -g read 22)" -ge 1 ] && gpio -g write 23 1
The assignment foo='command'
doesn't run command
. The variable foo
takes the value of the string command
and not its output.
Related videos on Youtube
Author by
user124824
Updated on September 18, 2022Comments
-
user124824 almost 2 years
I have a problem with a bash script on raspberry pi:
x='gpio -g read 22' if [ $x -ge 1 ] then gpio -g write 23 1 fi
The error is
integer expression expected
. Why?