Q&A
解決済
3回答
16681閲覧
総合スコア3
shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。
0グッド
1クリップ
投稿2020/09/28 08:47
0
1
あるシェルから別シェルを実行しその変数を受け取りたいのですが どうしたらいいのでしょうか?
例 aaa.sh
#!/bin/sh KEKKA="ABCabc" exit 0
bbb.shを実行した後にaaa.shを実行し$KEKKAを利用したいです。
#!/bin/sh ./aaa.sh echo $KEKKA exit 0
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
質問へのコメント
回答3件
有難うございます。 戻り値が2つの場合はどのようになりますか。
こちらを受けての回答です。
bash1read X Y < <(./aaa.sh)
bash
1read X Y < <(./aaa.sh)
のように実行すれば、 ./aaa.sh が複数の文字列、たとえば 111 、 222 を出力したときに、
./aaa.sh
X=111 、 Y=222 となります。
X=111
Y=222
出力の個数が可変の場合には、配列を利用することもできます。
bash1read -a A < <(echo 111 222 333) 2 3echo ${A[0]} 4echo ${A[1]} 5echo ${A[2]}
1read -a A < <(echo 111 222 333) 2 3echo ${A[0]} 4echo ${A[1]} 5echo ${A[2]}
bash1$ ./test.sh 2111 3222 4333
1$ ./test.sh 2111 3222 4333
投稿2021/02/25 10:12
総合スコア33
ベストアンサー
bbb.shを実行した後にaaa.shを実行し$KEKKAを利用したいです。 戻り値が2つの場合はどのようになりますか。
bbb.shでsourceを使用してaaa.shを取り込んでしまうってのが手っ取り早いでしょうか。 ※まぁ厳密には「別シェルを実行」ではなく「別シェルの内容を実行」なので質問の回答としては微妙ですが。
bbb.sh
aaa.sh
bash1#!/bin/sh 2# this is aaa.sh 3# 4KEKKA="ABCabc" 5KEKKA2nd="hoge"
1#!/bin/sh 2# this is aaa.sh 3# 4KEKKA="ABCabc" 5KEKKA2nd="hoge"
bash1#!/bin/sh 2# this is bbb.sh 3# 4. ./aaa.sh # or source ./aaa.sh 5echo ${KEKKA} 6echo ${KEKKA2nd} 7exit 0
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
総合スコア7918
回答へのコメント
2020/09/29 13:20
2020/09/30 09:04 編集
2020/09/29 14:01
2020/09/29 14:44
echoして、結果をバッククオートや$()で受ける形になります。
echo
$()
シェルスクリプト内で書き込んだ変数は自身と子プロセスのみに有効で、親の側に伝えることはできません。
投稿2020/09/28 08:51
総合スコア147012
2020/09/28 09:14
2020/09/28 09:29
2020/09/28 12:43
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
shellからshellを呼ぶには?戻り値