echo \"$(hostname -I)\"
"111.111.111 "
余分なスペースを避け、次に出力を変更するにはどうすればよいですか?"111.111.111"
答え1
コマンドが空白を印刷すると、出力に含まれます。さて、実際にはコマンド置換が引用されていないため、結果はトークン化され、2つの文字列と合計が2つの異なる引数"111.111.111
に渡され、単一のスペースに連結されて"
印刷されます。ここでは出力は変わりませんが、他の多くの場合には重要です。命令の置換後に何もない場合、単語分割の過程で空白は消えます。echo
echo
echo
複数のIPアドレスを印刷できるため、末尾のスペースをhostname -I
印刷する可能性が高く、最後のスペースをスキップするよりも、各IPアドレスの後にスペースを印刷する方が簡単です。
スペースを削除するには、サフィックス除去拡張を使用できます。
ip="$(hostname -I)"
ip="${ip% }"
printf '"%s"\n' "$ip"
または噴射を活用してください。
printf '"%s"\n' $(hostname -I)
後者は、スペースで区切られた各IPアドレスを個別に引用し、1行に1つずつ印刷します。