質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

4回答

10753閲覧

シェルスクリプトで別ファイルから変数や関数を呼び出す方法を教えて下さい。

iii

総合スコア29

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

1クリップ

投稿2017/12/06 08:29

例えばファイルa,b,cがあるとして、
ファイルaで変数を定義し、
ファイルbで関数を定義し、
ファイルcで変数と関数を呼び出し、実行する

という事をやりたいです。
どなたかやり方を教えて頂ければ幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

sourceを使って次のようにできます。

c

#!/usr/bin/bash source a source b ...

.bash_profileの中を見るとsource .bashrcなどとしていると思いますが同じ手法ですね。
sourceとすると通常のコマンド実行のようにサブプロセスを生成してそこで実行するのではなく、実行中のシェルプロセス内でsourceで指定したファイルの内容を実行してくれますので、変数・関数などの定義はそのまま今現在のシェルプロセスで有効になります。


aやbを単独で実行することを防ぎたいならa, bへは実行権限を付けないようにしておくと無難かも知れません。

投稿2017/12/06 08:46

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

補足。
ファイルaやbはどこにありますか?
source ./a
source /full/path/a
などのように書かないと動かない、あるいは想定外のファイルが読み込まれるかも。/ を含まないファイル名を渡すと PATH環境変数に登録されたディレクトリを探します。

ちなみに古い書き方ですが、
. ファイル名
も同じです。

投稿2017/12/06 14:16

a_saitoh

総合スコア702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KSwordOfHaste

2017/12/06 14:18

確かに・・・どうせならフルパスで書くべきでしたね。
guest

0

なお、変数だけならaの側でexportしておけば、aから起動されたスクリプトの中でも使えますね

投稿2017/12/20 03:24

a_saitoh

総合スコア702

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こうするとcが何処のディレクトリにあっても、同じディレクトリのa,bが読み込まれます。

bash

1#!/bin/bash 2dir=`dirname $0` 3. ${dir}/a 4. ${dir}/b

投稿2017/12/20 02:53

編集2017/12/20 02:54
hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問