2022年02月09日 更新
どうも、クラゲジュニアです。
Linuxコマンドで長い文章をファイル保存するときに役立つメモです。
ステップバイステップで実験しながら対策して最後に解決します。
忙しい人は一番最後を見て下さい。
[TOC]
まずは画面にそのまま出す例です。
echo "文字列"
で行います。
echo "どうも、クラゲジュニアです。"
どうも、クラゲジュニアです。
> ファイル名
をつけることで上書き保存されます。
echo "どうも、クラゲジュニアです。" > data.txt
ちなみに追加書き込みしたい場合は>>
を使ってください。
以降の実験は、簡単にするために標準出力で行います。
文字列の中にダブルクォートがある場合、意図通りに表示されません。
echo "どうも、"クラゲジュニア"です。"
どうも、クラゲジュニアです。
echo '文字列'
で行います。
echo 'どうも、"クラゲジュニア"です。'
どうも、"クラゲジュニア"です。
しかし、ダブルクォートもシングルクォートもある場合は別の対策が必要です。
バックスラッシュ記号\
を使ってエスケープします。
echo "どうも、\"クラゲジュニア\"です。"
どうも、"クラゲジュニア"です。
先ほどのダブルクォートやシングルクォートは「メタ文字」と呼ばれる特殊な文字です。長い文章などの場合は、中に様々なメタ文字が混ざっている可能性があります。
echo "どうも、クラゲジュニアです。現在$1は115円です。"
どうも、クラゲジュニアです。現在は115円です。
$
がメタ文字のため、$1
が表示されていません。
1つずつエスケープ対応するのは大変です。そこでヒアドキュメントというものを使います。
cat << "EOF"
どうも、クラゲジュニアです。現在$1は115円です。
EOF
どうも、クラゲジュニアです。現在$1は115円です。
問題なく表示できました。
cat << "終端文字列"
がヒアドキュメントです。
以下のように終端文字列を入力するまで、複数行を入力できます。
cat << "EOF"
どうも、クラゲジュニアです。
現在$1は115円です。
以上クラゲでした!
EOF
どうも、クラゲジュニアです。 現在$1は115円です。 以上クラゲでした!
終端文字列はEOF
以外の任意の文字列で問題ありません。
ちなみに、cat << "EOF"
ではなく cat << EOF
とするとエスケープされないので注意してください!
Linuxコマンドで長い文字列をファイル保存する具体例は以下の通りです。
cat << "EOF" > data.txt
どうも、"クラゲジュニア"です。
現在$1は'115円'です。
以上クラゲでした!
EOF
特殊文字も含め、問題なくdata.txt
に書き込まれています。
以上です。