- ベストアンサー
Cシェルでの文字列大小比較
Cシェルで set AA="aa" set BB="bb" if( $AA > $BB )then echo "$AA > $BB" endif というような判定がしたいのですが、 上記の場合、”if: 条件式構文が正しくありません”というエラーが出力されます。 Cシェルの場合、文字列の比較は ifでイコールかノットイコールかは判定できますが、文字コードの大小比較が出来ないようですが、 文字列の大小比較をするにはどうすればよいのしょうか
- bunarin
- お礼率70% (36/51)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
expr コマンドが使えます。コマンドを if の条件式で使うときは、{ } で囲みます。 if({ expr "$AA" \> "$BB" >/dev/null }) then ..... endif ただし、$AA $BB ともに数字のときは数値として比較するので、常に文字列として比較したいなら、 expr A"$AA" \> A"$BB" >/dev/null のように両方の先頭に同じ文字をくっつければ$AAが数値でも全体としては数値じゃなくなるので文字列比較になります。 expr 2 \> 10 →偽 expr A2 \> A10 →真
関連するQ&A
- シェルの配列
シェルで2つの配列の同じ位置の文字を同時にチェックしようとして以下のコードを組みましたが、上手くいきません。$dd中の文字が配列として扱われていないのはなぜだか教えていただけますか? #! /bin/csh -f set AA="18" set BB="20" set cc = "11 12 18 19" set dd = "24 22 20 21" @ idx = 1 foreach h_code ( $cc ) echo [$AA][$h_code][$BB][$dd[$idx]] # ccの1個目とddの1個目をそれぞれ$AA,$BBと比較 if( $AA == $h_code && $BB == $dd[$idx] ) then echo "OK" endif @ idx++ end
- ベストアンサー
- その他(プログラミング・開発)
- UNIX Cシェルで実数の比較
UNIX Cシェルで実数の比較がしたいのですが、 うまくいきません 以下のような結果になります。 うまく判定するにはどうすればよいのでしょう #!/bin/csh -f set CONSIZE=-0.01 echo "CONSIZE = $CONSIZE" @ CONSIZE = $CONSIZE if( $CONSIZE < 0.0 )then echo " 0以下;;; $CONSIZE" exit endif 実行 CONSIZE = -0.01 @: 数値形式が正しくありません。
- ベストアンサー
- Solaris系OS
- シェルプログラムの判定について
皆さんのお知恵をお貸しください シェルはcshです 目的set name = $<で$nameに入る文字が+-*/(一文字毎です)の時エラー処理をしたい 現状下記のプログラムですが判定出来ません set xx = $< set moji = `grep -c '[\-\+\*\/]' xx` if ( $moji == 1 ) then echo 文字に誤りがあります endif else if ( $moji == 0 ) then echo OKです endif +-*/が入った時にエラーを出したいのですが+-*/をどう判定したらよいのか教えて頂けます様お願い致します。
- 締切済み
- その他(プログラミング・開発)
- Cシェルでバイナリデータをテキスト文字列として持ちたい
A.BINというバイナリ形式ファイル (ex) 88 7A BB 4A 11 0D 7D F9 があるとします。 Cシェル内で、このA.BINを”文字列としてもつ”には どうすれば良いでしょうか。 ”文字列として持つ”について、もう少し詳細に言いますと、 set TEXT ## A.BINを何かしらの方法でTEXT変換し、TEXTへ格納 ## ↑ ここがわかりません echo TEXT --標準出力-- 887ABB4A110D7DF9 ↑こんな風に出力されたいです。 もしCシェルで不可能なのであれば、perlならありますので、 perlでの変換方法でも構いません。 すみませんが、知っている方、教えてください><。
- 締切済み
- Linux系OS
- Cシェルで、文字列中(str)に、固定文字列(abc)の数を数える方法
Cシェルで、文字列中(str)に、固定文字列(abc)の数を数える方法を教えてください たとえば、 set str = abcdabceabcd set abc = abc str中に、abcを現れる数(3)を求める方法を教えてください Cシェルは詳しい方がいらっしゃいましたら、是非教えてお願いいたします
- ベストアンサー
- AJAX
- 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 のように書きました。
- 締切済み
- その他(プログラミング・開発)
- Cシェルの文字列操作について
初心者ですが、Cシェルで、 最大7バイトの文字列('25'とか'1234567')を左空白埋めで表示したいのですがどうしたらよいでしょうか。 (7 - (文字列のバイト数))×空白 + 文字列 ??
- 締切済み
- その他(OS)
- Javaの文字列の大小比較についてです。
Javaでは、文字列の大小比較をする時、StringのcompareToを使用しまが… compareToの中の処理は一旦char型に直して、それを比較しているのでしょうか? また、compareToを使用せずに、プログラム内に自分で書いた場合、処理速度は変化ありますか?
- ベストアンサー
- Java
- 文字列比較
最長10文字の文字列を2件入力し、char型の配列にそれぞれ格納する。2つの文字列を比較し、文字列が同じだったら「equal」を表示し異なっていたら「Not equal」を表示するプログラムを作成せよという課題が出ました。 条件として、11文字以上の文字が入力されたら、先頭から10文字までを有効とし、11文字目以降を無視する。下記のプログラムで文字列1に11文字以上入力すると、うまく動きません。なぜ、うまくいかないかと、どうなおしたらよいかを教えてください。 #include<stdio.h> #include<string.h> #define max_length 10 void get_string (char *p_str, int size); int main() { char string1[max_length+2]; char string2[max_length+2]; printf("文字列1:"); get_string(string1,max_length+2); printf("文字列2:"); get_string(string2,max_length+2); if(!strncmp(string1,string2,max_length)) puts("equal"); else puts("Not equal"); } void get_string (char *p_str, int size) { fgets(p_str,size,stdin); }
- ベストアンサー
- C・C++・C#
お礼
早速の回答ありがとうございます。 完璧です。 助かりました。