2017-10-03 7 views
0

これはもっと一般的な質問かもしれませんので、あらかじめご了承ください。私はスクリプトを作成しており、複数のprintfまたはecho文を使用する代わりに、複数行の文字列を使用することをお勧めします。私は以下を持っていると言う:Bash - インデントされた複数行の文字列から空白を削除する

while : 
do 
printf "line 1 
line 2 
line 3" 
done 

2行目と3行目の理由は、ファイル内のくぼみの前方の空間で印刷されることになります。

l1 
line 2 
line 3 

コードのインデントを除いて、それを防ぐ方法はありますか?また、複数の行にまたがる情報を出力する必要がある場合は、複数のprintf/echo文を使用する方が良い方法でしょうか?

答えて

2

(ここでは空白)タブとインデントとは、私は怖い、

cat <<- EOF 
    line 1 
    line 2 
    line 3 
EOF 
+1

を**注:**と「*インデントに注意を払います* 'tabs'(スペースはしません)。エディタが 'tabs'の代わりにスペースを挿入すると、インデントを取り除き、単純に' hedoc * sigil 'として '<<'を使います。 –

1

マルチライン文字列は常に少し悪くなりますheredoc<<-で)使用するか、または他のいくつかの欠点を持っています。 bashコードに埋め込む最も読みやすい方法はおそらくhere-docです。これは出力時に見た目と同じように(ほとんど)文字列を表示します。余分なコツとして、あなたがそうのように、あまりにも文字列自体よりも目立つためにここに-docの区切り文字を作るために、余分な句読点を使用することができます。

if true 
then 
    some commands 

    cat <<"____EndOfTextBlock____" 
This text here 
spans multiple   
lines. 
____EndOfTextBlock____ 

    some other commands 
    even more commands 
fi 
関連する問題