printfオーダー?

printfオーダー?

以下の最初のコマンドが最後に印刷される理由を知りたいです。

file=$(printf .tar.gz & printf test)
echo $file

test.tar.gz期待どおりに出力されます.tar.gztest

ベストアンサー1

注文する非同期コマンド保証されておらず、シェルとオペレーティングシステムのスケジューラによって異なります。

簡単なテスト(Mac OSX El Capitalで実行zsh):

for shell in bash ksh zsh mksh yash dash; do
  printf '[%s]\n' "$shell"
  "$shell" -c 'file=$(printf .tar.gz & printf test); echo "$file"'
done
[bash]
test.tar.gz
[ksh]
test.tar.gz
[zsh]
.tar.gztest
[mksh]
.tar.gztest
[yash]
test.tar.gz
[dash]
test.tar.gz

私のUbuntu 14.04 VMでは、これらのすべてのシェルが作成されますtest.tar.gz

おすすめ記事