• ベストアンサー

複数bashスクリプトの定数?の共通化

たとえば以下のように A.bash、B.bash、C.bash の3つのbashスクリプトがあるときに それぞれの先頭で export OutFile=/aaa/bbb/ccc.txt と設定していたとします このとき、 何らかの事情で以下のよう export OutFile=/aaa/ggg/ccc.txt 変えなければならなくなった時に、 じか書きしている場合3ファイルとも 編集しなくてはいけません そうではなくて A.bash、B.bash、C.bashの3スクリプトの先頭で 設定ファイルを読み込んで export OutFile=/aaa/bbb/ccc.txt を取得するようにし、以下のように変更が発生した 場合も、 export OutFile=/aaa/ggg/ccc.txt 設定ファイルひとつだけ編集すればいいように したいのですが、そのようなことはできるのでしょうか? 説明べたでわかりにくいかも知れませんがお願いします。

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

  • ベストアンサー
  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.1

別のファイルに OutFile=/aaa/bbb/ccc.txt のように書いて保存します。このときファイル名を/hoge/hogeとしたとします。 次に対象となるスクリプトの先頭に . /hoge/hoge と記述します。 これでいけるはずです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#168973
noname#168973
回答No.2

#1さんの仰ってる通りですが、もう一つ別のアイデアを。 export しているという事は、この変数は環境変数です。 と言う事は、A, B, C がもしも同一の実行環境で実行(もしくは AからBやCを実行するなど継承関係で実行)されるのであれば、そのおおもとで一度だけ定義するだけで全てに継承されます。 結果、記述は一箇所にすることができます。 如何でしょうか? ^^)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ファイルbbb.fp5のスクリプトbbbからaaa.fp5のスクリプトcccを実行させたいが

    ファイルメーカーProを、1カ月前から始めた 初心者です。 使用環境:WindowsXP、ファイルメーカーPro6 1.ファイルaaa.fp5(スクリプトaaaは、自動立上げに設定)を開く。  スクリプトaaaの内容   ・開く[bbb.fp5] 2.ファイルbbb.fp5(スクリプトbbbは、自動立上げに設定)を開く。  スクリプトbbbの内容   ・開く[bbb.fp5]   ・全レコードを表示   ・レコードのエクスポート このあと、ファイルaaa.fp5のスクリプトcccを 実行させたいが、・レコードのエクスポートのあとに 何を選んで記述させたらよいか、分かりません。 教えて下さい。

  • シェルスクリプトについて

    シェルスクリプトについて Linuxで先頭にスペースが入っている行をひとつ上の行につなげたいと考えています。 その場合、シェルスクリプトはどのように書けばよいかご教示願います。 【ファイル内容】 aaa △bbb ccc ddd (b行の先頭のみスペース(△)が入っています。) 【変換後のファイル】 aaa bbb ccc ddd

  • シェルスクリプト(bash)によるファイルの編集

    シェルスクリプト(bash)によるファイルの編集についてのご相談です。 私にあまりスクリプトの知識がないので申し訳ございませんが、 どなたかお知恵を拝借させてください。 よろしくお願いします。 【条件】 ・以下のような文字列を含むファイルが複数あるとします。 ・そして、その文字列は、ファイル内の不特定の行に存在します。 ※[半角スペース]、[タブ]は実際には便宜上記載していますが、実際は 本当の半角スペース、タブが入ります。 AAA[半角スペース]BBB AAA[半角スペース]CCC AAA[タブ]BBB AAA[タブ]CCC 【やりたいこと】 このとき、 AAA[半角スペース]BBB および AAA[タブ]BBB の行の下に、それぞれ、 AAA[半角スペース]DDD  と   AAA[タブ]DDD を挿入したいのですが、これをスクリプト(コマンド)でどのように行えば よいのかわからずに困っています。

  • bshスクリプト で質問です。

    以下の内容のtmp.txtを aaa bbb ccc ddd eee fff 行末がbbbなら結合としたいです。 --希望結果-- aaa bbb ccc ddd eee fff この場合以下のスクリプトでうまくいかないのですが 原因を教えていただけますか? awk '{ gsub("bbb[\n]$","",$0); print }' tmp.txt OS、HP-UX11.0です。

  • bashのexportによる環境変数設定に関して教えてくださいませ。

    bashのexportによる環境変数設定に関して教えてくださいませ。 複数のファイルに記述している環境変数設定を まとめて実行したい場合はどのようにすればよいでしょうか。 例えば、 ◆hogeファイルの内容 export AAA=aaa soruce ./piyo ◆piyoファイルの内容 export BBB=bbb この状態で、 source hoge とすると、 AAA=aaaは設定されているのですが、 BBB=bbbは設定されないようです。 source の中からsource の記述はできないのでしょうか? source ./piyo 部分を ./piyo にしてもダメでした。

  • Excel VBA サブディレクトリの取得について

    Excel VBA についての質問です。 私は、VBAの初心者です。 フォルダ選択ダイアログを開き、あるフォルダを選択させます。 選択したフォルダ配下のファイルとサブフォルダにあるファイル一覧とそのファイルのパス取得したいです。 【例】D:\TEMP\AAA フォルダを選択 D:\TEMP\AAA  D:\TEMP\AAA\BBB\CCC.txt D:\TEMP\AAA\BBB\DDD\EEE.txt D:\TEMP\AAA\BBB\DDD\FFF.txt GGG.txt が存在する。 まず、フォルダAAAまで選択されたら、 以下の結果がエクセルに出力したいです。 BBB         CCC.txt BBB\DDD        EEE.txt BBB\DDD        FFF.txt               GGG.txt うまく伝えないかもしれないですが、ご教授お願いいたします。

  • Perlのワンライナーをスクリプトにしたい

    初歩的な質問で恐縮ですが、以下のPerlのワンライナーを、スクリプトファイルに記述するには、どのように書けば良いのでしょうか。 perl -ne "print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ );" "in.txt" > "out.txt" 下記のようにしてみたのですが、ダメでした。 perl "script.pl" "in.txt" > "out.txt" ----- script.plの内容 ----- print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ ); --------------------------- 環境はWindowsのコマンドプロンプトです。バッチファイルでの使用を想定しています。 自分はPerlに関する知識が無いので、Perlに関するサイトも見てみたのですが、情報が膨大で、ピンポイントでこの問題を解決する情報を探し出す事が出来ませんでした。 やり方が分かる方がおられましたら、お教え頂けないでしょうか。

    • ベストアンサー
    • Perl
  • C言語による「テキストファイルの読み書き(fprintf)」について

    C言語による「テキストファイルの読み書き(fprintf)」について質問です ずぶの初心者ですが、既知のファイルの1行目に指定した文字列を付加させるプログラムを作りたいと思っています。 以下のように作りました。 ------------------------------------------------------------ #include <stdio.h> int main(void) { FILE *fp; fp = fopen("test.csv","r+"); fprintf(fp,"コントロールカラム1,コントロールカラム2,・・・(略)・・・,コントロールカラム56\n"); fclose(fp); return 0; } ------------------------------------------------------------ このとき「test.csv」の内容が以下のようであったとします。(容量は1MBくらいです。) 001,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj この状態でプログラムをコンパイルして実行すると、「test.csv」の内容が以下のようになってしまいます。(一行目が消える) AAA,BBB,CCC,DDD,EEE 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj またcsvの行が増える度に妙な挙動になっていきます・・・(一行あいたり、先頭行が5行ほど消えたり) 希望する動作としては コントロールカラム1,コントロールカラム2,・・・(略)・・・,コントロールカラム56 001,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj 002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj ~(略) 5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj のようになるようにしたいのですがどのようにすればよいのでしょうか。 よろしくお願いします。 (使用ソフト:Borland C++ Compiler, Cpad) 参考にしたサイトの項目:http://homepage3.nifty.com/mmgames/c_guide/17-01.html

  • 外部パラメータを使用したファイルの作成・書き込み

    テキストファイルに以下の内容が書かれています。 ファイルパス:/aaa/bbb/ccc ファイル名:ファイル.txt これを読み込んで $filepath = /aaa/bbb/ccc $filename = ファイル.txt となっています。 この時(「ファイル.txt」は存在しません。)、以下のような処理を行うと「/aaa/bbb/ccc」ではなく、「/aaa/bbb」に「ファイル.txt」が作成されるのですが、なぜでしょうか?? open(TXT, ">> $filepath/$filename"); flock(TXT, 2); print TXT $header; flock(TXT, 8); close(TXT); この処理の前に$filepathの値を調べましたが、確かに「/aaa/bbb/ccc」となっています。 何か注意する点や、ここが問題では?と言うようなことがあれば教えてください。

    • ベストアンサー
    • Perl
  • EXCELで複数行の検索

    初心者です。 Aファイルのaaa、bbbなどをキーに Bファイルを検索してできるだけ簡単にマクロ等使わずに 下記のような抽出をする方法があれば教えてください。 よろしくお願いします。 Aファイル aaa bbb ccc Bファイル(例えば「ddd」と「あ」は別セルです) ddd あ eee い aaa う fff え bbb お ggg か ccc き 結果 Aファイル aaa う bbb お ccc き