シェルの配列についての質問

このQ&Aのポイント
  • シェルの配列を使用して同じ位置の文字をチェックするコードがうまく動作しない理由について教えてください。
  • 配列の要素が正しく処理されないため、コードが正しく動作しないことがあります。
  • 配列の要素を参照する際には、[$dd[$idx]]のようにインデックスを指定する必要があります。
回答を見る
  • ベストアンサー

シェルの配列

シェルで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

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

配列として入力するには、 dd=(24 22 20 21) とするか ddd="24 22 20 21" dd=($ddd) の様に( )で囲む必要があります

bunarin
質問者

お礼

早速の回答をありがとうございます。 やってみたところ、上手くいきました。 感謝します。

関連するQ&A

  • Cシェルでの文字列大小比較

    Cシェルで set AA="aa" set BB="bb" if( $AA > $BB )then echo "$AA > $BB" endif というような判定がしたいのですが、 上記の場合、”if: 条件式構文が正しくありません”というエラーが出力されます。 Cシェルの場合、文字列の比較は ifでイコールかノットイコールかは判定できますが、文字コードの大小比較が出来ないようですが、 文字列の大小比較をするにはどうすればよいのしょうか

  • シェルプログラムの判定について

    皆さんのお知恵をお貸しください シェルは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 +-*/が入った時にエラーを出したいのですが+-*/をどう判定したらよいのか教えて頂けます様お願い致します。

  • foreachで上限回数指定方法または別の解決策を・・・

    こんにちは。 以下のような多次元の配列があるとして… $test["aa"]["name"] = "名前1"; $test["aa"][mail] = "メール1"; $test["bb"]["name"] = "名前2"; $test["bb"][mail] = "メール2"; $test["cc"]["name"] = "名前3"; $test["cc"][mail] = "メール3"; $test["dd"]["name"] = "名前4"; $test["dd"][mail] = "メール4"; foreach($test as $key => $val){ echo $key; echo $test[$key]["name"]; echo $test[$key]["mail"]; } とすると、1番目のキー・名前・メールアドレスのセットが4つ出力されてしまいますが、これに最大出力限度数を指定し、2などに制限したいです。 foreachでループ回数上限を指定する事は可能でしょうか? また、他にも上記のような処理が可能な方法があれば教えて下さい。

    • ベストアンサー
    • PHP
  • シェルでのスペースを考慮した処理方法

    以下のようなシェルを実行しますと #! /bun/csh set A_CODE = `echo "   5555 " | awk -F\t {print $1}'` echo "$A_CODE" (5555の前後に複数のスペース文字有り) 結果--------------------------- 5555 ------------------------------- というようにスペースがなくなってしまいます。 なにか方法がありましたら教えてください。

  • 多次元配列から値を抽出する方法

    Array ( [0] => Array ( [0] => Array ( [0] => Array ( [1] => XX ) ) [1] => AA [2] => BB [3] => CC [4] => DD ) ) 上記配列から値(XX)を1つの変数に取り出すにはどうすればよろしいでしょうか?

    • ベストアンサー
    • PHP
  • 2次元配列の宣言について

    文字列の配列の場合 Dim m As Variant Dim moji As String m=Array("aa","bb","cc","dd",・・・) moji=m(1) とすれば"bb"がmojiに代入されるのはわかるのですが これを二次元配列(3行4列)にする場合どのように 宣言(Dim~や、Array~)等はどのように記述すればよろしいですか? 基本的な質問でごめんなさい。 よろしくお願いします。

  • 二次元配列の参照とデータ取得について

    いつもお世話になっております。 C言語で以下のようなことをしたいのですが可能でしょうか。 <二次元配列のデータ> [AA,11][BB,22][CC,33] ・検索文字列⇒"BB" 上記検索文字列"BB"が二次元配列データの左側(AA,BB,CCなど)と 照合されて一致した場合、その照合した配列の右側(11,22,33)を アウトプットとして返すようにしたいのですが実現可能でしょうか。

  • 変数に改行を含む文字列を代入

    変数に改行を含む文字列を代入したいです。 具体的には echo $KAIGYO AA BB CC DD となるような $KAIGYOを作りたいです。 どのようにしたらよいでしょうか?

  • responseTextから連想配列へ

    ajaxによってサーブレットから以下のresponseTextを取得したとします。 ~ A ~ a : aa b : bb c : cc ~ B ~ d : dd このようなレスポンスから var array; array["a"] = 'aa'; array["b"] = 'bb'; というように連想配列を取得したいのですが、どのようにすれば良いかわかりません。 どなたか力を貸していただけませんか?

  • 配列

    以下のコードの用に配列内に入っている要素をif文の「(array[i] == AA)」みたいに直接判定するのは不可能なのでしょうか?よろしくお願いいたします。 String[] array = {"AA","BB","CC"}; for(int i = 0;i < array.length;i++) {  if(array[i] == AA) //ここの部分

    • ベストアンサー
    • Java