Isso porque você está verificando se a string gpio -g read 22 é maior que 1. Como gpio -g read 22 não é um número, você recebe esse erro.
Você não explica o que está tentando fazer, mas acredito que queira comparar a saída do comando gpio . Para fazer isso, você precisa colocar o comando em $() ou backticks ( '' ):
x=$(gpio -g read 22)
if [ "$x" -ge 1 ]
then
gpio -g write 23 1
fi
Ou, mais simplesmente:
[ "$(gpio -g read 22)" -ge 1 ] && gpio -g write 23 1
A atribuição foo='command' não é executada em command . A variável foo recebe o valor da string command e não da saída.