やまとです。
いつもありがとうございます。
Perl + csh を同時(?)に実行する方法を教えてください。
OSはSunです。
具体的にどのような処理を行いたいか簡単に説明しますと。
1.Perlでcshを実行(system関数?)し、cshで環境変数をセット(source)する。
2.cshで環境変数をセットしたら、ファイルを出力する処理が行われます。
3.Perlでcshによって出力されたファイルの内容を画面に表示します。
以下ソースを掲載します。(抜粋して)
==================================================
= Perl ( test_perl.pl )
$data = "ABC";
$ret = system(`test_csh.sh $data`);
・
・
ファイル(test.log)を開き、読込、画面に表示します(まだ作成してません。)
==================================================
= Csh ( test_csh.sh )
source test_source.sh
echo $1 > test.log
==================================================
= test_source.sh
setenv CLASSPATH .:/aaa・・・・・・
↑
PATHの設定を行ってます。
==================================================
画面に、「ABC」と出力させたいのです。
Perlからcshが実行されていないように思えるのですが、
Perlのsystem関数の使い方が誤っているのでしょうか?
それとも、ClassPath等の設定をしなければならないのでしょうか?
ちなみにコマンドから、
# test_csh.sh ABC
と実行しますと、ファイルが出力され、かつ、sourceも実行されています。
Perlから実行する方法を教えてください。
説明が不十分であれば、補足いたしますのでご指摘ください。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
========================================
= Perl ( test_perl.pl )
$data = "ABC";
system("test_csh.sh $data");
# $ret = system(`test_csh.sh $data`);
# だと、バッククオート` を使っているから
# test_csh.sh $dataを実行したときの出力結果が
# system関数の引数として使われます。
# ですから、ダブルクオート" を使いましょう。
# 以下、test.logの内容を出力
open TESTLOG, "test.log" or die "test.log: $!\n";
print <TESTLOG>;
close TESTLOG;
=========================================
こんな感じでできるんじゃないでしょうか(未確認です)。
この回答への補足
回答ありがとう御座います。
結果から申しますと出来ませんでした。
$data = "ABC";
$ret = system("test_csh.sh $data");
ファイル出力すらされません。
test_csh.sh が動いていないような感じです。
しかし、コマンドラインからは実行すると、正常にファイル出力されます。
systemで呼び出すファイル名を、フルパスで指定したりしてみましたが、
いざ画面から実行すると、実装できません。
test_csh.shの実行権限もありますし、PATHの設定が問題なのでしょうか?
No.4
- 回答日時:
シェルスクリプトの先頭に実行するシェルの指定はあるでしょうか。
具体的に言うとスクリプトの1行目が
#! /bin/csh
となっているでしょうか。
cshのpathは、次のコマンドで確認できます。
which csh
また今回のテストプログラム test_source.sh
を which コマンドでpathが表示されることを確認してください。
mosuradazoさん
ご回答有難う御座います。
お礼の返事遅くなりまして本当にすみません。
結果から申しますと、実装できました。
原因はPerlが動作しているオーナー・ユーザが全く関係ないもので
Path等が全く設定されていなかったのです。
Pathを正しく設定して正常に動作できました。
有難うございました。
No.2
- 回答日時:
できなかったんですか。
以下のスクリプトを試したところ、
ファイル作成・ファイルの内容出力ともに
できましたが。
==========
(test_perl.pl)
$data = "ABC";
$ret = system("./test_csh.sh $data");
open TESTLOG, "test.log" or die "test.log: $!\n";
print <TESTLOG>;
close TESTLOG;
==========
==========
(test_csh.sh)
echo $1 > test.log
==========
>systemで呼び出すファイル名を、フルパスで指定したりしてみましたが、
>いざ画面から実行すると、実装できません。
>test_csh.shの実行権限もありますし、PATHの設定が問題なのでしょうか?
いや、フルパスを指定してもだめってことは
PATHの問題ではないでしょう。
何が問題なのかはスクリプトを見てみないとわかりません。
HOGERA3さん
ご回答有難う御座います。
お礼の返事遅くなりまして本当にすみません。
結果から申しますと、実装できました。
原因はPerlが動作しているオーナー・ユーザが全く関係ないもので
Path等が全く設定されていなかったのです。
Pathを正しく設定して正常に動作できました。
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
Strawberry Perl for Windows ...
-
perlで文字の置換又は抽出に関...
-
perlの構文でカンマの意味が分...
-
サクラエディターの設定の仕方...
-
perl このテキストファイルを簡...
-
Raspberry Pi
-
VB.net
-
テキストファイルで提出とは?
-
perl 正規表現でエラー
-
Perlで、「が」を、「...
-
プログラミングでポインタの勉...
-
perlで自動ログインをしたいが...
-
Perl言語について。
-
perlで2次元配列をサブルーチ...
-
画像が表示でnull; this.src
-
Perlで特定文字列から特定文字...
-
C言語の問題について
-
PerlでUTF-8のファイルの文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
perlをバージョンアップしたら...
-
openした後、closeしないでプロ...
-
アルファベットに付いて質問し...
-
Strawberry Perl for Windows ...
-
bashスクリプト
-
Perlのエラーについてご教授く...
-
Perlで特定文字列から特定文字...
-
画像が表示でnull; this.src
-
Wallpaper Engineでおすすめの...
-
Perl言語について。
-
perl LWPでURLにアクセスした時...
-
Perlで時間の計算
-
Perlで、「が」を、「...
-
ファイルアイコンの左下に緑の□...
-
Perl の外部モジュールの利用方法
-
このファイルを開く方法で困っ...
-
perlで2次元配列をサブルーチ...
-
Windows10においての『Perl』の...
おすすめ情報