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.

Share:
16,843

Related videos on Youtube

user124824
Author by

user124824

Updated on September 18, 2022

Comments

  • user124824
    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?