web-dev-qa-db-ja.com

文字列のbash変数の後のスペースを回避するにはどうすればよいですか?

色の変数があります。文字列内で評価することにより、文字列に色を設定するために使用します。ただし、名前の後にスペースを含める必要があります(名前にテキストの一部が含まれないようにするため)。これは時々悪く見えます。

このスペースの使用(印刷)を回避するにはどうすればよいですか?

例(Red=1およびNC=2):

echo -e "$Red Note: blabla$NC".

出力:

1 Note: blabla2.

期待される出力:

1Note: blabla2.
20
MatthewRock

変数を中括弧で囲むだけです:

echo -e "${Red}Note: blabla${NC}".

Parameter Expansion の詳細を参照してください。

移植性を重視する場合は、優れた回答 printfがechoより優れている理由 も参照してください。

31
cuonglm

使用する習慣をつける必要があるのはprintfです。

printf '%sNote: blabla%s\n' "$Red" "$NC"

%s変数を置き換えます。そしてその -eは、printfがバックスラッシュ値\ n、\ tなどを移植可能な方法で受け入れるため、必要ありません。

echo -eは他のシェルに移植できません。

別のオプション:

出力を連結する2つのコマンドを使用できます。

echo -ne "$Red"; echo -e "Note: blabla$NC"

単純な文字列連結を使用できます:

echo -e "$Red""Note: blabla$NC"

または、{ }名前とテキストの混乱を避けるために:

echo -e "${Red}Note: blabla$NC"
4
user79743