質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

1回答

932閲覧

bashでの変数への値の格納方法

comeia

総合スコア0

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

0グッド

0クリップ

投稿2022/08/06 06:28

編集2022/08/06 08:55

前提

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

試したこと

様々なウェブページを参照して変数への値の格納方法を確認しましたが、どうしても変数への格納方法のどこが間違っているのかがよくわからず困っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/08/06 06:54 編集

lesser=$a と lesser=$b はそれぞれ lesser=$1 と lesser=$2 とするのではないでしょうか。それから、[ はコマンドなので、[ の直後にスペースを入れる必要があります。 if [ "$a_" = "0" ] && [ "$b_" = "0" ]; then
guest

回答1

0

再現しました。
if の書き方に問題がありますね。

shell

1 if ["$a" = "0"] && ["$b" = "0"]; then

[ の後ろに空白が必要です。

shell

1 if [ "$a" = "0" ] && [ "$b" = "0" ]; then

[ は、/usr/bin の下にある外部コマンドですので、空白を入れないと $a や $b と文字列結合して [0 とか [1 というコマンドが指定されたことになってしまいます。

そういったコマンドは存在しませんので「[0: command not found」というエラーが表示されている感じです。

[ の後ろにスペースを入れることで、正しく引数が渡されて、エラーは解消されます。

実行結果:

shell

1$ ./gcd.sh 56 42 214

投稿2022/10/26 13:44

編集2022/10/26 13:45
take88

総合スコア1491

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問