2016-04-23 11 views
1

semのGNU Parallelからの以下の動作を理解できません。 私は単一引用符を使用すると、うまく動作しているようです:私は、二重引用符を使用する場合sem(GNU並列)は、一重引用符と二重引用符で動作が異なるのはなぜですか?

sem -j1 'echo $(date);sleep 5;echo $(date)' 
sem --wait  

は、しかし

Sat Apr 23 15:46:50 EDT 2016 
Sat Apr 23 15:46:55 EDT 2016 

を与えます。

sem -j1 "echo $(date);sleep 5;echo $(date)" 
sem --wait 

結果は、sleep 5が完全に無視されているようです

Sat Apr 23 15:46:08 EDT 2016 
Sat Apr 23 15:46:08 EDT 2016 

です。

これはなぜ起こるのか説明できますか?それはGNU並列またはbashによって引き起こされますか?

+0

参照:[bashの一重引用符と二重引用符の違い](http://stackoverflow.com/q/6697753/3776858) – Cyrus

答えて

3

semまたはGNUとは関係ありませんが、シェルとは関係ありません。

文字列に二重引用符を使用すると、シェルはすべての環境変数参照を一度に展開します。シングルクォート文字列を使用すると、シェルはその変数拡張を行いません。

関連する問題