• 締切済み

Bシェルのif文

if文の否定について教えてください。 if $aa='xxx' then else echo yyy fi 間違っているかもしれませんが上に書いたことをやろうとしています。 他の言語の if(!($aa='xxx'))echo yyy; をBシェルのif文で書くにはどうしたらいいですか? $aa='xxx'を$aa!='xxx'にするのではなくて、その外側のifの書式を教えてください。 最初に書いたコードでは、if(!条件)を知らないので if(条件) else 処理 endif のように書きました。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

sh の if 文はコマンドを実行してそのステータスコードでthenかelseかを実行します。コマンドとしては、test, grep 等が良く使われます。今回は test ですね。詳しくは man test で調べてください。#1 さんの書かれた [ コマンドも testコマンドの別名です。 色々書けますが、!= 演算を使わないで書くとすると、 if test ! $aa = xxx then echo yyy fi …if test ! \( $aa = xxx \) とカッコで囲んだほうがわかりやすいかも。 if test $aa = xxx then : else echo yyy fi 注…thenの後を空に出来ないので何もしないコマンド : を書いておく あるいはif文を使わないで、 test $aa = xxx || echo yyy とか case $aa in xxx) ;; *) echo yyy;; esac も使われます。

  • utf7
  • ベストアンサー率29% (11/37)
回答No.3

#1です。 参考URLに変な文字列を入れてしまいました。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

if $aa='xxx'の否定形は if $aa!='xxx'です。 参考URLを参照下さい。

参考URL:
http://cyberam.dip.jp/linux_command/shellscript.html
  • utf7
  • ベストアンサー率29% (11/37)
回答No.1

Bシェルで文字列比較をする場合、 if [ $aa = 'xxx'] then ・・・ else ・・・ fi のように書きます。数値比較の場合。、-neオプションを使えばそれほど問題ありませんが、 ノットイコールを表す場合は、上記1行目を if [ $aa != 'xxx'] のように書きます。!=を使用しない文字列比較のノットイコール表現は、恐らくないと思います。 書くなら上記2パターンのどちらかです。 !=を使用できない理由があるのでしょうか?

参考URL:
たにもと