他のスクリプトからスクリプトを実行しても機能しません。

他のスクリプトからスクリプトを実行しても機能しません。

私はさまざまなコンポーネントをコンパイルするためにシェルスクリプトを使用しています。別のシェルスクリプトを呼び出す基本スクリプトがあります。ここに例があります。

Repo/build.sh
Repo/code/mode/1/build/build_1.sh

Repo/code/mode/1/build/これで、フォルダに移動してスクリプトを実行するとbuild_1.sh機能します。

build_1.shしかし、スクリプトが呼び出されると、build.shビルドは機能しません。

#!/bin/bash
#!/usr/bin/env bash
REPO=/home/${USER}/project
set -o errexit
set -o nounset
set -o pipefail

(cd ${REPO}/code/mode/1/build/; ./build_1.sh)

上記の方法がうまくいかないのはなぜですか? envがすでに設定されていると思いますREPO

ベストアンサー1

問題は設定時です。REPO シェル変数export 、あなたはそうなるためにこれをするわけではありません環境変数

残念ながら、まだ詳細を提供していません。どのようにbuild_1.sh内部で呼び出すと、ビルドは機能しませんが、build.shスレーブスクリプトがそのREPO変数に依存している場合は、スレーブスクリプトをエクスポートしないと表示できないため、問題が発生します。

救済策はおそらく (私が言ったように、質問にはまだ詳細がありません。)実際に変数をエクスポートしています。これを行うには、次のように指定します。

export REPO=/home/${USER}/project

あなたのスクリプトから。

この回答の以前のバージョンに関する推論の根本的なエラーを指摘した@ilkkachuに感謝します。

おすすめ記事