• ベストアンサー

【csh】ファイルの中の値を配列変数として取得するには?

環境はHP-UX11です。 ファイルを読み込ませて、そのファイルの中身の一行を配列のひとつとして変数に代入するにはどうしたらよいのでしょうか? 例えばファイルの中身が $DIR1/$FILE1 $DIR1/$FILE2 $DIR2/$FILE3 だったとして、この3行を配列として読み込ませたいのですが、cshで可能なんでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • potedora
  • ベストアンサー率47% (66/140)
回答No.1

ファイル名が「abc.txt」として set FILELINES=`cat abc.txt` とすると $FILELINES[1]に$DIR1/$FILE1 $FILELINES[2]に$DIR1/$FILE2 $FILELINES[3]に$DIR1/$FILE3 が入り、$#FILELINESに個数が入ったと思います。 環境がないので検証はしていません。

steel_50130
質問者

お礼

できました。 ありがとうございました。

関連するQ&A

  • テキストファイルを配列に

    始めまして C言語にてテキストファイルの中身を読み込み一次元配列に代入するというシステムを作ろうとしているのですがわかりません テキストファイルの中身は 12 5312 72 7 444 53 7884 といった具合で100数行あり一行ごとに配列に入れたいです 勉強を始めたばっかりで本を見ても書いていなく困っています わかるかたご指導願えますか? よろしくお願いいたします

  • CSHの環境変数の設定

    CSHで外部で定義したconfigファイルから変数を読み込み そのシェル及び子シェル内で有効な変数として使用したのですが どのような方法がありますでしょうか? 以下の方法だと親シェルからでは子シェルで設定した変数が読み込めないため困っています。 config.csh #!/bin/csh -f setenv AAA aaa test.csh #!/bin/csh -f set APP_ROOT = `dirname $0` cd $APP_ROOT set CONFIG_FILE=$APP_ROOT"/config.csh" echo $AAA

  • 『存在するかどうか分からない』環境変数にcshで新しいパスを設定したい

    Linuxを利用しており、「『存在するかどうか分からない』環境変数に新しいパスを設定したい」のですが、うまくいきません。 言い方を変えると、対象の環境変数が存在しようが存在しまいが、うまくいくようにしたいのです。 具体的には、ログインシェルに tcsh を使用しているため、hogehoge.cshを作成し、/etc/csh/login.d/に入れました。hogehoge.cshの内容は以下のようになります。 #!/bin/csh setenv HOGEHOGEPATH /usr/lib/hogehoge:${HOGEHOGEPATH} ログインしてみると HOGEHOGEPATH: Undefined variable. といった内容のエラーが表示され、環境変数も設定されません。 shで設定する方法もありますがcshで良い書き方はないでしょうか。ご教示お願いいたします。

  • char型のポインタ配列に変数の値の代入できる?

    c言語でchar型のポインタ配列に変数の値を代入できるのでしょうか? 例えば int A[10]={1,2,3,4,5,6,7,8,9,10}; char *C[10]; のCに配列Aの中のデータを文字列として入れたいのです。 C[0]="A[0]"としてもA[0]という文字列が代入されてしまうだけなので… よろしくお願いします。

  • 配列を使わずに、数字(連番)を使用した変数に値を代入したい。

    配列を使わずに、数字(連番)を使用した変数に値を代入したい。 お世話になっております。 配列を使わずに、数字(連番)を使用した変数($a1,$a2,$a3・・・)に、 forループを使って、値を代入したい。 #================================= for($i;$i<10;$i++){ $a??? = 10; #←ここがわかりません。 } #================================= どなたかご存知の方、ご教授ください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 配列変数のアドレス

    C言語で、配列を宣言した場合、 char a[] = "hoge"; 変数aは初期化された配列の先頭番地を指しているのですが、この時、 変数aの中身も変数aのアドレス(&a)ともに上記の配列の先頭番地になっているようなのですが、 これによって、配列の変数aは読み取り専用で、書き換えられないということにしていると思っていいのでしょうか? ちなみに、 char *p = "fuga"; とした場合は、pと&pのアドレスは異なって、pの中身は書き換えられます。

  • 返り値の配列中の1つの値のみ受け取りたい。

    関数で、例えば配列型を返す関数oshiete()があるとします。 これを個別の関数に割り当てる場合は以下のようになります。 list($var1, $var2, $var3) = oshiete(); あるいは $vars = oshiete(); $var1 = $vars[0]; $var2 = $vars[1]; $var3 = $vars[2]; もし返ってくる配列中の値のうち、1つだけ取り出したい場合は以下のようになります。 $var1 = oshiete(); $var1 = $var1[0]; しかし、ここで2行書くのが無駄に思えて仕方がありません。 1行目の「$arr = 」に続けて、関数oshiete()の値を1つだけ取り出す方法って無いのでしょうか?「$arr = oshiete()[0];」のような書き方は駄目でした。 あと、もし2行で書く方法し無い場合、関数oshiete()が1つの値を取り出すことだけが目的で、かつそれ以降使うことが無い場合、配列を一旦変数$var1に入れて次にその変数に上書きする形で値を代入する方法は、メモリ消費量などの観点から見ると有用でしょうか?他で使わないなら別の変数名を容易するのは無駄に思えます。

    • 締切済み
    • PHP
  • 配列と変数について

    練習のため家庭の収入、支出のバランスを計算するプログラミングを作っています。その為変数宣言についてなのですが以下のようにすると配列をcoutした時にint の変数に代入した値と一致しません。意味不明な数字が表示されます。この時何が起きているのでしょうか(この数字はどこから?各配列には何が入っているのでしょうか?)。 #include <iostream.h> int main (){ int income, loan, expenditure, saving; int cluster []={income, loan, expenditure, saving}; income=100, loan=200, expenditure =300, saving = 500; cout << cluster [0]<<endl<<cluster [2]<<endl<<income<<endl<<expenditure; return 0; } しかしながら以下のように変数の初期化を配列への代入の前に行うと各配列と変数の値が一致します。何故ですか? #include <iostream.h> int main (){ int income, loan, expenditure, saving;      income=100, loan=200, expenditure =300, saving = 500; int cluster []={income, loan, expenditure, saving}; cout << cluster [0]<<endl<<cluster [2]<<endl<<income<<endl<<expenditure; return 0; } 2.今回配列を使ったのはこれらの変数をまとまりとして取り扱ったほうが便利だと思ったからです。この様な場合クラスを作ったほうが良いのでしょうか?メモリ的に配列の方がまとまりが良いように感じましたが、そんな考慮は必要ないのでしょうか? 3.変数名を表示することは出来ますか?上記のincome、savingなどです。

  • cshでファイルサイズ取得

    ヤマトです。 cshでファイルのサイズを取得したいのですが、分かりません。 環境はRed Had Linux7.2です。 hoge.txtのファイルサイズが0バイトの場合、処理を行うという事をやりたいのですが・・・ =======SAMPLE====== if ( hoge.txtのファイルサイズ = 0 ) then echo "サイズは0バイトです。" endif 教えて頂けると有り難く思います。宜しくお願いします。

  • 多次元配列のオーソドックスなファイル書き込みについて教えてください

    PHP勉強中のAJAMAです。 下記にありますようなプログラムによって配列構造を持った変数をCSVファイルに書き込み、一行を1レコードとして管理をしたいと考えています。書き込み処理は、一意である変数の場合は、きっちりと書き込まれるのですが、配列変数の部分はarrayと書き込まれてしまいます。配列変数の中身を書き込むには、join(",",$xxxx)とすることで、すべてを同じ一行に書き込むことができました。しかしこれですと、すべてが、,区切りの二次元構造になってしまうので、これらのデータを読み込んで活用したい場合に、多次元構造を把握する処理をしなくてはいけないように見えるのですが、どうにもその仕組みを思考することができないので、模範的な手法を教えていただけないでしょうか。 serialize()も試してみましたが、知識がオブジェクト指向にまでいたっていないこともあり、うまくいきませんでした。(実行環境がPHP4だからかもしれません) 以 下、作成中のソースコードです。                     ※$numから右が配列変数部 $lines=array("$recordID",$nickname,$date,$area,$num,$item,$size); $lines=implode(",",$lines); $lines=$lines."\n"; serialize($lines); ←試行して不成功だった加筆部分。 //CSVファイルに書き込み $fp=fopen("report.csv","a"); flock($fp, LOCK_EX); fputs($fp,$lines); fclose($fp); 宜しくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう