ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:kshで配列を使いたい) kshで配列を使いたい 2010/12/15 17:00 このQ&Aのポイント kshで配列を使いたいです。とあるコマンドの結果として、"a b c"のようなスペース区切りの結果を変数に受け取り、それを配列として読み込みたいです。redhatのkshではうまくいきますが、AIXのkshでは"("でエラーになってしまいます。配列として認識させるにはどうすればいいでしょうか。 kshで配列を使いたい kshで配列を使いたいです。 とあるコマンドの結果として、"a b c"のようなスペース区切りの結果を変数に受け取ります。 それを配列として読み込みたく、以下のようにしています。 ******************************************** VAR=`TOARU_COMMAND` # とあるコマンドの結果は"a b c" ARRAY=(${VAR}) ******************************************** redhatのkshではうまくいったのですが、 AIXのkshでは"("でエラーになってしまいました。 どうすれば配列として認識されるのでしょうか。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー SaKaKashi ベストアンサー率24% (755/3136) 2010/12/15 17:07 回答No.1 sh系のsh,ksh等で配列を扱えるのは最近のことです。cshは結構前からOKでしたが。 redhatのkshとAIXのkshのバージョンが違うのでしょう。 AIXですからIBMに聞いてください。 質問者 お礼 2010/12/15 18:33 バージョンが違いなんですね。 redhatではksh --version とすると、 93s+ 2008-01-31 と出力されましたが、AIXではエラーになり、バージョンすらわかりません。 kshのバージョンをあげてもらうという対応はできそうにないので、配列を使わずにする方法で何とかします・・・。 通報する ありがとう 0 広告を見て他の回答を表示する(1) その他の回答 (1) notnot ベストアンサー率47% (4900/10358) 2010/12/15 21:58 回答No.2 配列変数が使えないとすると、 set $VAR して、$1 $2 $3 で参照します。 スクリプトのもとの引数が失われますので、事前に変数に保存しておきます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発その他(プログラミング・開発) 関連するQ&A kshの配列格納で教えてください 表題の件で教えてください。 kshのシェルスクリプトを作成しているのですが、 原因不明のエラーで悩んでいます。 ■やりたいこと あるコマンド<CMD>の実行結果を配列DETAILに格納したい。 ■現状 <CMD>の実行結果を配列DETAILに格納しようとしています。 <CMD>の単体での実行結果は以下の通りです。 CMD実行結果(イメージ) ---------- Title ---------- Detail A ... B ... ---------- この結果を以下のようにして変数に代入しようとするとエラーが発生してしまいます。 set -A DETAIL @(<CMD>) set -A DETAIL `<CMD>` エラーメッセージは以下です。 ksh: set: --: unknown option 恐らく実行結果に「---」という文字列があるためエラーになっているのだと思われます。 これをエラーとせず、配列に---を格納する方法を何かご存じないでしょうか。 for文で変数に格納される文字列 (Bシェル) シェルの記述に関しての質問です 例えば、 a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 ・ ・ ・ というスペース区切りの配列が書かれたリストファイル(test.lst)を for VAR in `cat test.lst` do set $VAR echo $1 echo $2 echo $3 done という形で処理しようとします。 そうすると、$VAR に入る変数は "a1" や "b1" といった感じで行単位ではなく、スペース区切りで入ってきてしまい、 $2 や $3 はnullになってしまいます。 これを行単位で $VAR という変数に代入する方法はありますか? 区切り文字はスペースのままとします。 宜しくお願いします。 JavaScriptで配列に配列を追加できません var array = [ ]; var add1 = ["a", "b"]; var add2 = ["c", "d"]; array.push(add1); array.push(add2); ----------------------------------------- 期待しているarrayの中身 [["a", "b"], ["c", "d"]] ----------------------------------------- 実際の実行結果 ["a", "b", "c", "d"] ----------------------------------------- どうすれば良いのでしょうか? 2つの配列を1つにするには? var listWords1 = new Array ("a","b","c","d"); var listWords2 = new Array ("e","f"); // という2つの配列を下のような一つの配列にするにはどうすればいいですか? var listWords3 = new Array ("a","b","c","d","e","f"); 試しに var listWords3 = new Array(); listWords3 = listWords1 + listWords2 などとやってみましたがやっぱりダメでした。(^^; またもやド素人の質問でごめんなさい。自分なりに様々なキーワードでgoogleしているのですが、基本的なことすぎるのか、なかなか答えをヒットすることができません。私のような初心者がJavaScriptを基礎の基礎から勉強できるサイトがありましたら、併せてご紹介いただけませんでしょうか?よろしくお願いいたします。m(_ _)m 配列の結合 変数1 Array ( [A] => あいうえお ) 変数2 Array ( [B] => わおん ) というような二つの変数の配列を Array ( [A] => あいうえお [B] => わおん ) というように、ひとつの変数内に結合する方法はないでしょうか? ExcelのVBAで配列の処理 PHPから移行する新米ですが・・・ PHPからVBAに移行を考えているのですが、VBAの考え方が難しい?わからず難儀しております。 ExcelのVBAで配列の処理を考えているのですが、以下のPHPと同じ動作をするVBAを書きたいのですが、どうすればよいのでしょうか? <?php // 配列を使って、$aを北海道、青森とする。$bは、単なる受け皿です。 // これをエクセルVBAではどのように記述するのでしょうか? $a = array(); $b = array(); array_push($a, "青森"); array_push($a, "青森"); array_push($b, array_pop($a)); array_unshift($a, "北海道"); array_unshift($a, "北海道"); array_push($b, array_shift($a)); var_dump($a); var_dump($b); exit; ?> また、PHPにはvar_dumpという便利なものがありますが、VBAでは VBEのローカルやウォッチ式で見るというのが普通でしょうか? イミディエイトにvar_dumpのように変数の内容を表示させるコマンドはあるのでしょうか? 配列の比較について Javascritpで配列全体の比較を行いたいのですが 下の結果が「違います」のように表示させたいのです。 比較の部分はどのように書いたらよいのでしょうか? var a1 = new Array(); var a2 = new Array(); a1['a'] = 1; a1['c'] = 2; a2['a'] = 1; a2['c'] = 3; //=========== 以下の配列の比較方法 if (a1 == a2){ alert('同じです'); } else { alert('違います'); } 配列について var myarray=new Array(); myarray[0]="a"; myarray[1]="b"; myarray[2]="c"; myarray[3]="b"; myarray[4]="a"; myarray[5]="d"; のような配列があります。ここから重複しないようにa,b,c,dだけを抜き出すのにはどのようにJavascriptで書いたらよいのでしょうか。 よろしくお願いします。 関数内での繰り返し処理の結果を配列で受け取りたい 関数内でfor文で繰り返し処理を行い、 結果を配列として返すような関数を書きたいと思っています。 function hoge(){ var a = [1,2,3,4]; for (var i=0; i < a.length; i++){ a1 = "a" + i; var arr = new Array(); arr.push(a1); } return arr; } しかし、以下のように 関数hogeの結果を変数bで受け取ってみると、 配列の最後のデータしか表示されません。 var b = hoge(); alert(b); //a3のみが表示される a0, a1, a2, a3と表示されるようにするには、 どうしたらよいでしょうか。 二つの配列のマッチング お世話になっております。 配列$a と $b から配列$cを作りたい。 どうすればいいですか? $a = array('200708', '200709', '200710' ,'200711', '200712', '2000801); $b = array('200710,3', '200712,1'); $c = array('200708,0', '200709,0', '200710,3' ,'200711,0', '200712,1', '2000801,0); または、 $c = array('200708', '200709', '200710,3' ,'200711', '200712,1', '2000801); セッション変数と配列 通常の変数であれば、 $var = array($_POST["var1"], $_POST["var2"], $_POST["var3"]); ですが、セッション変数を配列にするにはどうしたら良いのでしょう? (配列から取り出す方法も含め) $var = array($_POST["var1"], $_POST["var2"], $_POST["var3"]); $_SESSION["$var"]; や $_SESSION["$var"] = array($_POST["var1"], $_POST["var2"], $_POST["var3"]); としてみましたが、ダメなんですね。 よろしくお願いいたします。 *PHPバージョンは5です 連想配列を配列に入れるには 下記のような連想配列を配列に入れる簡単な方法はありますか。 array("a"=>"1","b"=>"2") 期待する結果(print_r) Array ( [0] => Array ( "a" => "1" ) [1] => Array ( "b" => "2" ) ) 宜しくお願い致します。 responseTextから連想配列へ ajaxによってサーブレットから以下のresponseTextを取得したとします。 ~ A ~ a : aa b : bb c : cc ~ B ~ d : dd このようなレスポンスから var array; array["a"] = 'aa'; array["b"] = 'bb'; というように連想配列を取得したいのですが、どのようにすれば良いかわかりません。 どなたか力を貸していただけませんか? Javascriptの配列の便利な処理 Javascriptの配列で以下のような処理は自分で作らないといけないのでしょうか? var csv = 'A,B,C,D'; var ary new Array(); ary = csv.split(','); 要素の有無 true/false ary.exists('A') 結果 true 要素の削除 ary.delete('A') 結果 ary = ['B', 'C', 'D']; 多次元配列のカウント+1の仕方 多次元配列のカウント+1の仕方 下記のような多次元配列(ちなみに、これって二次元配列ですか?)があるとき、 常に、「2列目の0がある数+1」を返すようにしたいのですが、 どうすればよいのでしょうか? $data[0][1]とか$data[1][1]とか$data[2][1]とかの意味です。 下記の例でいくと、2列目に0が3つあるので、数値の4を返したいのですが…、 ■$data 1,0,A1,B1,C1 2,0,A2,B2,C2 3,0,A3,B3,C3 4,2,A4,B4,C4 ■var_dump($data); array(4) { [0]=> array(5) { [0]=> string(1) "1" [1]=> string(1) "0" [2]=> string(2) "A1" [3]=> string(2) "B1" [4]=> string(2) "C1" } [1]=> array(5) { [0]=> string(1) "2" [1]=> string(1) "0" [2]=> string(2) "A2" [3]=> string(2) "B2" [4]=> string(2) "C2" } [2]=> array(5) { [0]=> string(1) "3" [1]=> string(1) "0" [2]=> string(2) "A3" [3]=> string(2) "B3" [4]=> string(2) "C3" } [3]=> array(5) { [0]=> string(1) "4" [1]=> string(1) "2" [2]=> string(2) "A4" [3]=> string(2) "B4" [4]=> string(2) "C4" } } 無名配列からハッシュを作りたいのですが・・・ $VAR1 = [ 'No', 'a', 'i', 'u', 'e', 'o', ]; #VAR1と同じ数の<>区切りの下記のようなデータを読み込み配列に代入 --List----------------------- 1<>あ<>い<>う<>え<>お<> ------------------------- foreach(0..$#List){ @Array=split(/<>/,$List[$_]); } 最終的なイメージは print "$a{No}"; >1 print "$a{a}"; >a となるよう、上記VAR1の無名配列の値をキーに、読み込んだ<>区切りのデータを関連付けて表示させるようにしたいのです。 foreach my$var(@$VAR1){ ...ここをどうすれば配列の値をハッシュのキーとして作成出来るのか頭を悩ませてます。 } 先輩方のお知恵をお借りできませんでしょうか。 宜しくお願いします。 Java:クラスのインスタンスを配列の要素にする? 問題集で次のプログラムを見掛ました。 A[] array = {new B(), new C()}; クラスA型の配列変数arrayにクラスBとクラスCのインスタンスを要素として代入しています。 このような配列を作成した場合、具体的にどのような使い方があるのでしょうか? 簡単なプログラムを書いて頂けると嬉しいです。 よろしくお願いします。 VBからDLLへ多次元配列を渡す/配列の添え字 C++で作ったdllにVBAから配列を渡して、計算結果を再びVBAに戻して、アウトプットはVBAで、ということをしています。(経験豊富な方への相談です。) 具体的には、渡したい配列の先頭アドレスをlong型で記憶し、そのlong型の配列を受け渡ししています。 ただ、ご存知の方が多いかもしれませんが、VBAとC++では配列の添え字の順序が逆になっており、非常に面倒です。どういうことかといいますと、 Dim array(0 to 4, 0 to 9) as long をdllに渡し、array(2,6)を参照したい場合、C++では(Cでの配列名をc_arrayとし、これに先頭アドレスを入れると)、 c_array[(4+1)*6 + 2 ]; としなければならないと思います。これをプリプロセッサで #define C_ARRAY(a,b) c_array[(4+1)*b + a] としたらVBでの配列の感覚で扱えますが、この擬似配列C_ARRAY(a,b)を関数に渡すときなどは結局同じ混乱が再び生じることになってしまいます。 これを、何らかの方法で、簡潔に解決することはできないものでしょうか? VBA(エクセルを念頭においています)のほうで配列の添え字の順序をC++のそれに沿うように変更できたりしたら非常にうれしいですが、無理でしょうか? $PDO->fetchAll()したときに、数字の配列を取り出したい お疲れ様です。 いつもお世話になっています。 SELECT A,B,C FROM TABLE $row=$PDO->fetchAll(); var_dump($row); 得られる結果 Array( [A]=>10 [0]=>10 [B]=>8 [1]=>8 [C]=>6 [2]=>6 ) とでてきます。PDO::FETCH_COLUMN,x で1個ずつは取り出せますが、fetchAllで取り出したうえで、key=0,1,2の配列を適当な配列に入れなおしたいです。 できるだけソースがすっきりしたかたちで取り出しをしたいのですが、どのような方法がありますか? よろしくお願いします。 連想配列の一部分を全て表示したいのですが・・。 すみません。phpの事はあまりわからないのですが、以下のような連想配列がありまして、 (下記のような連想配列が大量にあります。) Array ( [0] => Array ( [a] => 1111 [0] => 1111 [b] => 2222 [1] => 2222 [c] => 3333 [2] => 3333 ) [1] => Array ( [a] => 5555 [0] => 5555 [b] => 6666 [1] => 6666 [c] => 7777 [2] => 7777 ) ) 上の配列から下記の配列のみ全て表示したいのですがどう記述したらよいでしょうか。 Array[0][a] Array[0][b] Array[0][c] Array[1][a] Array[1][b] Array[1][c]
お礼
バージョンが違いなんですね。 redhatではksh --version とすると、 93s+ 2008-01-31 と出力されましたが、AIXではエラーになり、バージョンすらわかりません。 kshのバージョンをあげてもらうという対応はできそうにないので、配列を使わずにする方法で何とかします・・・。