2016-05-05 9 views
1
foo="thank you" 

foo=$(echo "$foo"; echo "for your help") 

出力は次のとおりです。

thank you 
for your help 

は、間に改行して2つの文字列を追加するためのより良いPOSIXの方法はありますか?このアプローチは汚いと感じます。

更新:

  • 私は多くの環境で実行する必要があり、そのうちの一つがecho -eを拒否します。
  • 2つの変数を追加するか、$some-command.shの結果をvarに追加することができます。

答えて

1

どうprintfを使用してはどうですか?

foo="$string_one 
$string_two" 

またはコマンドの出力を連結:

$ foo='thank you' 
$ foo="$(printf "%s\n%s" "$foo" "for your help")" 
$ echo "$foo" 
thank you 
for your help 
0
foo="thank you\nfor your help" 
echo -e $foo 
+1

[POSIX 'echo'](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html)に' -e'はありません。 –

0

私は最も簡単な方法は、二重引用符で囲まれた文字列からの割り当てであることを考える

foo="$a_string 
$(some_command)" 

このアプローチは余分を必要としません呼び出されるコマンドは移植可能です。

+0

これはうまくいくかもしれませんが、個人的には、インデントが変更された場合(たとえば、後で 'if'ステートメントで囲むことにした場合など)、改行されるコードには慣れていません。 –

+0

明らかに、最も優れたインデントの習慣のために、 'autoconf'が行うことに従うべきです。 –

+0

'autoconf'が何をするのか分かりません。 –

関連する問題