コードを含んだファイルを猫の にするには?

cat <>`を使って、コードをファイルに出力したいのですが。

cat <<EOF >> brightup.sh
!/bin/bash
curr=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ $curr -lt 4477 ]; then
   curr=$((curr+406));
   echo $curr  > /sys/class/backlight/intel_backlight/brightness;
fi
EOF

と表示されますが、ファイル出力を確認すると、このようになります。

!/bin/bash
curr=1634
if [  -lt 4477 ]; then
   curr=406;
   echo   > /sys/class/backlight/intel_backlight/brightness;
fi

一重引用符を付けてみましたが、出力にも一重引用符が付いてしまいます。この問題を回避するにはどうすればよいでしょうか?

ソリューション

必要なのは最小限の変更だけで、`

ヒアドキュメントのフォーマットは次のとおりです。

デリミタ

wordに対して、パラメータの展開、コマンドの置換、算術演算の展開は行いません。 またはパス名の展開は行われません。 wordの中に引用符で囲まれた文字がある場合 の文字が引用されている場合、デリミタはワードの引用符を除去したものとなります。 ヒアドキュメントの行は展開されません。 もし、wordが が引用符で囲まれていない場合は、ここの文書のすべての行がパラメータ 展開、コマンド置換、算術展開を行います。 後者の場合は 後者の場合、文字列 ˶ˆ꒳ˆ˵ 無視され、˶ˆ꒳ˆ˵ 無視されます。 は引用符で囲む必要があります。

解説 (7)

また、EOFマーカーを使用する場合は、最初のマーカーを引用する必要があるため、展開が行われません'。

#-----v---v------
cat  brightup.sh
#!/bin/bash
curr=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ $curr -lt 4477 ]; then
   curr=$((curr+406));
   echo $curr  > /sys/class/backlight/intel_backlight/brightness;
fi
EOF

IHTH

解説 (2)

これはうまくいくはずです。私も試してみましたが、期待通りの結果が得られました。

cat  file # use overwrite mode so that you don't keep on appending the same script to that file over and over again, unless that's what you want. 

以下のようにしても動作します。


cat 
解説 (3)