次のように変数を割り当てました。
MYCUSTOMTAB=' '
しかし、エコーで使用すると:
echo $MYCUSTOMTAB"blah blah"
または
echo -e $MYCUSTOMTAB"blah blah"
ただリターンシングルスペース残りの文字列は次のようになります。
blah blah
変更せずに文字列全体を印刷するには?\t
私の好みに比べて広すぎるので、カスタムインデントに使用したいと思います。
答え1
これを防ぐには、変数を二重引用符で囲む必要があります。フィールド分割、どちら食べるあなたのスペース:
$ MYCUSTOMTAB=' '
$ echo "${MYCUSTOMTAB}blah blah"
blah blah
答え2
提案通りこの回答変数を引用するだけで十分です。
あなたの場合に引用符が必要な理由は、引用符がないと、bashがSplit + glob演算子を引用文に適用するためです$MYCUSTOMTAB
。デフォルト値$IFS
にはTAB文字が含まれているため、echo -e $MYCUSTOMTAB"blah blah"
何でも$MYCUSTOMTAB
分割して同じになります。あなたが書いた内容は同じです:
echo -e "blah blah"
(しかし、あなたはおそらくここでそれをしたくないでしょう-e
)。
printf
代わりに使用することもできますecho
。
printf '%s\n' "$MYCUSTOMTAB"
printf '%s\n' "${MYCUSTOMTAB}blah blah"
printf
または、同じ種類の\n
拡張を実行するには、次の\t
代わりにecho -e
使用します。%b
%s
printf '%b\n' "${MYCUSTOMTAB}blah blah"
参考のためにお読みくださいなぜprintfがechoより優れているのですか?
答え3
変数に二重引用符を使用する必要があると思います。
echo -e "$MYCUSTOMTAB"."blah blah"
答え4
あなたの質問にタグが付けられていることを知っていますが、bash
とにかく最大の移植性と信頼性のために以下を使用します。
printf "%sblah blah\n" "$MYCUSTOMTAB"
または
someString="blah blah"
printf "%s%s\n" "$MYCUSTOMTAB" "$someString"