シェルスクリプトはプログラミング言語じゃないから、
ちょっとした書き方の違いで動かない。
だから皆、嫌がる

shellcheck というツールで、チェックした方が良い

a=1
echo $a

変数宣言時には、$ を付けないけど、参照時には$ を付けるとか、
変数宣言時、a = 1 と、= の前後に空白があると、構文エラーとか

if [ $a -eq 1 ]; then echo 等しい; fi

[ ] は、test コマンドの別名。
[ の後ろと、] の前に、空白が必要

シェルスクリプトよりも複雑なものは、Ruby などのプログラミング言語を使うとよい