下記のヒヤドキュメントの中で、$1に代入された値をつかいたいのですが、どうするといいのでしょうか? perl では簡単にできます。
echo $1
echo <<"EOF"
$1
EOF
echoは標準入力を受け付けません。つまり、ヒアドキュメントも受け付けません。
ASCII24 - アスキー デジタル用語辞典 - ヒアドキュメント
http://yougo.ascii24.com/gh/38/003832.html
下記のスクリプトならOKです。
#!/bin/bash
echo $1
cat << EOF
$1
EOF
#!/bin/bash
echo $1
awk '{print}' << EOF
$1
EOF
echo <<"EOF" : \$1 is $1 : EOF
ではなく
echo <<EOF : \$1 is $1 : EOF
としてみたらどうでしょうか。
http://www.geocities.jp/geo_sunisland/input_output.html
の中のヒアドキュメントが参考になるかと思います。
http://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html
ヒアドキュメントの形式を以下に示します:
<<[-]word
here-document
delimiter
word に対するパラメータ展開・コマンド置換・算術式展開・パス名展開は全く行われません。 word が一部でもクォートされている場合は、 delimiter は word のクォートをほどいた結果 (クォート文字を削除した結果) となり、ヒアドキュメントに含まれる行では展開が行われなくなります。 word がクォートされていなければ、ヒアドキュメント中の全ての行に対してパラメータ展開・コマンド置換・算術式展開が行われます
つまり
cat <<END $1 END
であれば変数展開されます。
試してみると、echo だと、1行分になるので展開はされますが、出力されないようでした。
コメント(0件)