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

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

新規登録して質問してみよう
ただいま回答率
85.35%
sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

3回答

15795閲覧

shellからshellを呼ぶには?戻り値

GoodBoy1200

総合スコア3

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

1クリップ

投稿2020/09/28 08:47

あるシェルから別シェルを実行しその変数を受け取りたいのですが
どうしたらいいのでしょうか?


aaa.sh

#!/bin/sh KEKKA="ABCabc" exit 0

bbb.shを実行した後にaaa.shを実行し$KEKKAを利用したいです。

#!/bin/sh ./aaa.sh echo $KEKKA exit 0

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

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

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

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

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

guest

回答3

0

有難うございます。
戻り値が2つの場合はどのようになりますか。

こちらを受けての回答です。

bash

1read X Y < <(./aaa.sh)

のように実行すれば、 ./aaa.sh が複数の文字列、たとえば 111222 を出力したときに、

X=111Y=222 となります。


出力の個数が可変の場合には、配列を利用することもできます。

test.sh

bash

1read -a A < <(echo 111 222 333) 2 3echo ${A[0]} 4echo ${A[1]} 5echo ${A[2]}

実行結果

bash

1$ ./test.sh 2111 3222 4333

投稿2021/02/25 10:12

genzouw

総合スコア33

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

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

0

ベストアンサー

bbb.shを実行した後にaaa.shを実行し$KEKKAを利用したいです。
戻り値が2つの場合はどのようになりますか。

bbb.shsourceを使用してaaa.shを取り込んでしまうってのが手っ取り早いでしょうか。
※まぁ厳密には「別シェルを実行」ではなく「別シェルの内容を実行」なので質問の回答としては微妙ですが。

bash

1#!/bin/sh 2# this is aaa.sh 3# 4KEKKA="ABCabc" 5KEKKA2nd="hoge"

bash

1#!/bin/sh 2# this is bbb.sh 3# 4. ./aaa.sh # or source ./aaa.sh 5echo ${KEKKA} 6echo ${KEKKA2nd} 7exit 0

投稿2020/09/29 01:54

編集2020/09/29 01:57
Y.H.

総合スコア7918

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

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

GoodBoy1200

2020/09/29 13:20

すごいですね。./aaa.shを実行するのに ../aaa.shと記載するんですね。。なんで??
Y.H.

2020/09/30 09:04 編集

その説明は source の部分リンクにしてるので、その先の記事読んでください。
GoodBoy1200

2020/09/29 14:01

有難うございました。
Y.H.

2020/09/29 14:44

ちなみに > ../aaa.sh ではなく、 . ./aaa.sh または、 source ./aaa.sh です。
guest

0

echoして、結果をバッククオートや$()で受ける形になります。

シェルスクリプト内で書き込んだ変数は自身と子プロセスのみに有効で、親の側に伝えることはできません。

投稿2020/09/28 08:51

編集2020/09/28 08:56
maisumakun

総合スコア146018

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

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

GoodBoy1200

2020/09/28 09:14

恐れ入ります。具体的なスクリプトを教えてください。。orz
maisumakun

2020/09/28 09:29

aaa.sh #!/bin/sh echo ABCdef bbb.sh KEKKA=$(./aaa.sh)
GoodBoy1200

2020/09/28 12:43

有難うございます。 戻り値が2つの場合はどのようになりますか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問