2016-08-30 4 views
1

以下の変数iの値をシェルセクション内のecho.shスクリプトに渡すにはどうすればよいですか?メークファイル内のループ変数をシェル関数に渡す

loop: 
    for i in 3 2 1; do \ 
     echo "var i = $$i"; \ 
     echo $(shell echo.sh $$i); \ 
    done 

echo.shは、単純に次のようになります。出力は

for i in 3 2 1; do \ 
     echo "var i = $i"; \ 
     echo ; \ 
    done 
var i = 3 

var i = 2 

var i = 1 

を示し

#!/bin/bash 
echo $1 

トリッキーな部分は$に$私を渡すことができるようにすることです(シェル...)メイク関数。私はこれまでこれを理解することができませんでした。

おかげ

EDIT:$(shell ...ラインにechoを加算して出力を更新しました。それはコマンドを実行しようとしています。元の質問はまだ立っている。

+1

「echo.sh」がまったく存在しないと不平を言っています。 – aaaaaa123456789

+0

不足しているコマンドを修正するために更新されました。元の質問はまだ立っている。 – Alkaline

答えて

1

shell呼び出しを取り除くだけでなく、残りのコマンドがシェルに送られる前に呼び出され、呼び出されます。

loop: 
    for i in 3 2 1; do \ 
     echo "var i = $$i"; \ 
     ./echo.sh $$i; \ 
    done 
+0

私はこれが私の単純な例ではうまくいくことに気が付きましたが、実際には、ループ変数 '$ i'をmakefileシェル関数' $(shell ... $$ i) '内に展開する方法について質問しています。 – Alkaline

+0

@Alkaline私はあなたがなぜそれをしたいのか分からず、レシピがシェルに送られる前に**一度**機能が拡張されていれば、それはシェルループ内にあることを知る方法がありません。これを本当に行う必要がある場合は、おそらくmakeの 'foreach'関数を使う必要があります。 – user657267

+0

Makeの 'foreach'は、コードを実行するよりも文字列の作成に適しています。しかし、私は今、私が作ることをあまりにも多く求めているという印象を受けています。 make関数内で変数を展開するなど、makeで複雑すぎることをやっていないという点については、私は答えを記しておきます。 – Alkaline

関連する問題