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

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

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

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

Q&A

解決済

1回答

726閲覧

BASHのANDとORの判定

mugichon

総合スコア61

bash

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

0グッド

1クリップ

投稿2020/04/06 08:17

編集2020/04/17 04:29

以下のようなIF文を作成しています。

bash

1PARA1="評価" 2PARA2="OFF" 3if [ "$PARA1" = "実行" -a "$PARA2" = "ON" -o "$PARA1" != "実行" -a "$PARA1" != "評価" ]; then 4 echo AAAA 5fi 6 7期待した結果 8<何も出力されない> 9 10実際の結果 11<何も出力されない> 12 13PARA1="何もしない" 14PARA2="OFF" 15if [ "$PARA1" = "実行" -a "$PARA2" = "ON" -o "$PARA1" != "実行" -a "$PARA1" != "評価" ]; then 16 echo AAAA 17fi 18 19期待した結果 20AAAA 21 22実際の結果 23AAAA 24

イメージとしては、($PARA1="実行" AND $PARA2="ON") OR ($PARA1!="実行" AND $PARA1!="評価")
のようにしたいと思っています。
しかし、上記では、左から順に評価されるらしく、上記のような結果になりません。

どうすれば良いでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

演算子の前後には空白文字が必要です。
"$PARA1"="実行"と書いてしまうと、=が演算子と見做されず、"$PARA1"="実行" != ""と同じ意味になり、PARA1の内容にかかわらず常に真になります。

投稿2020/04/06 08:55

otn

総合スコア84788

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

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

mugichon

2020/04/07 01:18

ご回答ありがとうございます。 空白を入れても意図したとおりにならないのですが、何が原因か 分かりますでしょうか??
otn

2020/04/07 01:53

・修正後のコード ・意図する結果 ・実際の結果 を書いてください。
mugichon

2020/04/16 01:38

回答が遅くなりすみません。 ↑のコード修正しました。 意図する結果としては、 PARA1="実行"、PARA2="ON" の場合、echo 表示 PARA1="実行"もしくは"評価"を除く値の場合(その際、PARA2は何でも良い)にecho表示 としたい…という感じで意図が伝わりますでしょうか??
otn

2020/04/16 03:30

「このコードを実行したら、こういう結果を期待したが、実際にはこういう結果になった」 という「コード」を載せてください。説明じゃなくて。 質問のコードだと何も表示されませんが、これは意図通りなのですか?
mugichon

2020/04/17 04:32

ご回答ありがとうございます。 コード修正しました。 私が以前実行したときは表示されてしまいましたが、改めて実行したら何も表示されませんでした。 「何も表示されない」が意図したとおりの動作なのですがなんでだろう… 想定通りの動作をしたので、一旦完了とさせてください。。 ありがとうございました。
otn

2020/04/17 11:25

混乱してたんでしょうね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問