3

私はシェルスクリプトを呼び出したい場所からメイクファイルを持っています。これは何かを行い、結果をメイクファイルに返します。

詳細な説明 :-

私のメイクファイルから、次のようにシェルスクリプトを呼び出します:-

source = $(PWD)
target = $(ROOT)
SCRIPT:= /home/........./temp.sh
FUNCTION:=$(shell $(SCRIPT $source $target))`

シェル スクリプト「temp.sh」:-

source=$1
target=$2

echo There are $# arguments to $0: $*
common_part=$source # for now
result="" # for now

while [[ "${target#$common_part}" == "${target}" ]]; do
    common_part="$(dirname $common_part)"

    if [[ -z $result ]]; then
        result=".."
    else
        result="../$result"
    fi
done

if [[ $common_part == "/" ]]; then
    result="$result/"
fi

forward_part="${target#$common_part}"

if [[ -n $result ]] && [[ -n $forward_part ]]; then
    result="$result$forward_part"
elif [[ -n $forward_part ]]; then
    result="${forward_part:1}"
fi

echo "Result=$result"
  • Shell-Script の "echo ステートメント" が表示されません。同じ理由は何ですか?
  • 結果をmakefileに戻すにはどうすればよいですか?
  • これはメイクファイルからスクリプトを呼び出す正しい方法ですか?

私はこの分野の初心者です。

4

1 に答える 1

2

呼び出し構文が間違っています。あなたが欲しい

FUNCTION:=$(shell $(SCRIPT) $(source) $(target))

補間された Makefile 変数は、1 文字でない限り、名前を括弧で囲む必要があります。

于 2012-11-05T11:01:19.563 に答える