
今現在VineLinux4.1をサーバとして起動させております。
その関係もありまして維持としてシェルを動かす事はある意味必須の状態です。
本題はAと言うスクリプトからBと言うスクリプトを呼び出す方法がわかりません。
試してみた方法はsourceで呼び出す方法です。
A.shの中身を以下とすると
#!bin/bash
echo ="B.shを呼び出します"
source B.sh
echo ="シェルスクリプトを終了します"
exit 0
上記のようにした場合、最初のecho文は出力され、B.shの内容を一通り終えると最後のechoは出力されずA.shは完了しません。
ごくごく基本的なことかもしれませんが、うまく検索にも引っ掛けられなかったので、ご質問させていただきます。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
#2です。
>cshは=の前後にスペースが入るかと思いますが、今回はbashを指定しておりますので。
cshの何のことを言ってるのかわかりませんが、例えばbashで、
echo="シェルスクリプトを終了します"
は、echoコマンドじゃなくて、echo というシェル変数に「シェルスクリプトを終了します」という文字列をセットするコマンドになります。当然何も表示されません。
>A.shとB.shは単独で正常に稼動できる状態です。
B.shが単独で正常に動いているように思えることは、B.shに問題がないことを意味しません。
例えば、B.sh をexitで終了したりするとそこでbashは終了するわけだし。
>質問の例はあくまで例ですが、
書かれているA.shに問題がなさそうなので、B.shの中に原因があると想像しました。
現象が発生する最小限の、A.sh と B.sh の内容をすべて正確に書いてください。
今気づきましたが、A.sh の最後に無意味なexit 0がありますが、もしかして、B.shの最後にもexit 0が?
source コマンドは、その場所に指定したファイルの内容を挿入するコマンドです( C の #include 相当 )。もし、新たにbashプロセスを起動して、そこでB.shを動かしたいなら、
bash B.sh
です。他には#1の方が書いた方法もあります。
notnot様、ご回答ありがとうございます。
私の勘違いで「=」を挿入してしまいました。
おっしゃるとおりです、お詫び申し上げます。
実際試してみたところ「bash B.sh」、これが私のほしかった回答です。
A.shとB.shは単純に合わせると500行に及ぶ内容でしたので今回かなり簡略化して例題とさせていただきました。
無意味なexit 0とおっしゃられますが、シェルの結果情報として戻り値を設定しておくのは基本と認識していたのですが、誤解のようですね。
このあたりも改めて勉強させていただきます。
今回は「bash B.sh」で質問の回答が得られたと言う事で締めさせていただきます。
この度は私の勘違いもあいまって回りくどくなってしまいましたが解決できまして助かりました。
ありがとうございました。
No.2
- 回答日時:
B.sh の中に原因があるのではないですかね。
あるいは、echo と = の間に空白が無くて、echoコマンドになってないとか。
この回答への補足
ご回答ありがとうございました。
質問の例はあくまで例ですが、同様の指定方法でログなどは吐き出されておりますのでechoコマンドの使い方は間違っていないと認識しております。
cshは=の前後にスペースが入るかと思いますが、今回はbashを指定しておりますので。
その他は#1の補足とあわせて何かアドバイスがございましたら宜しくお願い致します。
No.1
- 回答日時:
ちゃんと実行ビットを立てていれば
>source B.sh
は、
B.sh
か、もしA.shと同じディレクトリにあって、そのディレクトリがPATHに登録されていないものであれば
./B.sh
でいけませんか?
この回答への補足
早速のご回答ありがとうございました。
補足と致しましてB.shの内容は正常に実行されております。
問題はA.shの内容の途中でB.shが組み込まれているわけですが、この呼び出されたB.shが終了してしまうと残りのA.shの内容を残して終了してしまう事なんです。
スクリプトの内容はA.shがサービスの起動内容になり、B.shはiptablesの設定になります。
やりたい事は起動したサービスに対し、iptablesの設定を同時に、適切に行うというもので、A.shの内容の中にB.shを組み込まなければ、A.shとB.shは単独で正常に稼動できる状態です。
これで何かわかればお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) ログインシェル時のSHELL環境変数 1 2022/06/08 19:21
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- 友達・仲間 彼氏持ちの女子と下校した 1 2022/12/14 22:09
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- その他(プログラミング・Web制作) ZWCAD CUIXとLISPの関係について 1 2022/09/28 03:07
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- 友達・仲間 学年で起きた炎上事件 3 2023/01/01 11:59
- 哲学 日本語のあたらしい文法を考えよう。 6 2022/06/25 17:41
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batである文字列内に特定の文字...
-
cshの条件式について教えてくだ...
-
シェルで and/or の優先順位に...
-
大手町駅。それはホームから非...
-
SONYの音楽ソフト「x-アプリ」...
-
文化祭の書類で不備がありました
-
スクリプトのエラー「unexpecte...
-
TOPコマンドで表示するCPU使用...
-
「CMDにて実行するデフラグ」と...
-
python IDLEで訂正、削除のやり...
-
shutdownコマンドをキャンセル...
-
HDDがしょっちゅう動いている
-
シェルスクリプトでエラーが出ます
-
cronでの処理が途中で中断終了...
-
ラズパイで『’test.service’をs...
-
XPのHomeとProの見分け方
-
エクセルの表にヘンな枠が・・・
-
emacsでCtrl+zを押してサスペン...
-
プロセス、サービス、デーモン...
-
DOS コマンドの~zfの意味を教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batである文字列内に特定の文字...
-
シェルスクリプトでうるう年判定
-
シェルスクリプトの変数の制限?
-
if文について
-
スクリプト中のexportコマンド...
-
bashスクリプト
-
ファイルから文字列を読み込む...
-
cshの条件式について教えてくだ...
-
【sh】tee コマンドの代替方法
-
Bシェル 文字列に含まれる特...
-
シェルスクリプトのパス
-
Cシェルプログラムで、あるディ...
-
UWSCについて
-
shellスクリプトから別のshell...
-
【シェルスクリプト】whileルー...
-
【シェルスクリプト】 for文で...
-
kshでのNULLの比較
-
【バッチ】shからOracleに接続
-
シェルで and/or の優先順位に...
-
Cシェルにあるコマンドの代わり
おすすめ情報