2016-06-21 8 views
1

私はここでドキュメントにユーザ入力を渡してその値をループする必要がある問題を解決しようとしています。私は、変数またはループのどちらかを渡すことができるのは1つだけです。両方とも動作していません。入力変数を渡してここにループしてください。ドキュメントbashスクリプト

以下は私のコードです。

bash <<START 
echo "Input :$1" 
for i in 1 2 3 4 5 
do 
echo "For Loop Value : $i" 
done 
START 

あなたがiの値が来ていない見ることができるように、このスクリプトを実行している./heredoc「ASD」イムが出力

Input :asd 
For Loop Value : 
For Loop Value : 
For Loop Value : 
For Loop Value : 
For Loop Value : 

の下に取得していますが。

しかし、一重引用符を追加すると、以下のような出力が得られます。

Input : 
For Loop Value :1 
For Loop Value :2 
For Loop Value :3 
For Loop Value :4 
For Loop Value :5 

入力値とループ値が出力されるように、どうすれば解決できますか?

ありがとうございます。

+0

bash << 'START'を試しましたが、その場合はpostで述べたようにユーザー入力変数の値が失われています。とにかくありがとうございます。 – vinay

+2

ああ、申し訳ありません! 'echo'ループの値をエスケープする:\ $ i "" –

+0

"gniourf_gniourf"あなたは天才です...感謝しています...仕事しました... – vinay

答えて

1

あなたは何も渡していません。 $1は実行中のシェルの最初の位置パラメータになります。恐らく空の文字列です。

これは、あなたがやりたいことになります。

variable="hello there" 

bash <<SCRIPT_END 
echo "Input: $variable" 
for i in 1 2 3 4 5; do 
    echo "For Loop Value: \$i" 
done 
SCRIPT_END 

をあなたはそれがそうでなければ、現在の環境で任意の変数iの値で補間されるようにここでは、文書内の$iをエスケープする必要があります(空設定されていない場合は文字列)。あなたがを行う

注これは(あなたが「ヒアドキュメントに渡す」と呼んでいるもの)$variableために起こるしたいと私たちは最初SCRIPT_ENDへの変更により(全体を単一引用することはできません理由です'SCRIPT_END')。

関連する問題