前提
bashで最大公約数を求めるシェルスクリプトの作成をしています。
以下の実装内容で、どうしても変数に値が格納されません。
あまりにも基本的なこと過ぎて本当に申し訳ないのですが、どなたかご教示いただけますと嬉しいです。
実現したいこと
引数として与えられた2つの数値の最大公約数を求めることができる
計算の過程で適切に変数に値を格納していきたい
発生している問題・エラーメッセージ
途中で変数に値を格納しようとしている個所がすべてうまくいっておらず、変数がブランクになっていることが原因で後続の処理がうまくいっていないようです。
./gcd.sh: line 12: [0: command not found ./gcd.sh: line 12: [1: command not found ./gcd.sh: line 12: [0: command not found ./gcd.sh: line 12: [3: command not found ./gcd.sh: line 12: [3: command not found
該当のソースコード
bash
1#!/bin/bash 2 3if [ $1 -lt $2 ]; then 4 lesser=$1 5else 6 lesser=$2 7fi 8 9upper=$(($lesser + 1)) 10for i in `seq 1 $upper`; do 11 a=$(($1 % $i)) 12 b=$(($2 % $i)) 13 if ["$a" = "0"] && ["$b" = "0"]; then 14 bcd_num=$i 15 fi 16done 17echo $bcd_num
試したこと
様々なウェブページを参照して変数への値の格納方法を確認しましたが、どうしても変数への格納方法のどこが間違っているのかがよくわからず困っています。
lesser=$a と lesser=$b はそれぞれ lesser=$1 と lesser=$2 とするのではないでしょうか。それから、[ はコマンドなので、[ の直後にスペースを入れる必要があります。
if [ "$a_" = "0" ] && [ "$b_" = "0" ]; then
