2016-04-23 76 views
1

我無法理解GNU Parallel的sem的以下行爲。 當我使用單引號,這似乎運作良好:爲什麼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 

結果是

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

它似乎sleep 5被完全忽略。

任何人都可以解釋爲什麼會發生這種情況?它是由GNU並行還是bash引起的?

+0

請參閱:[bash中單引號和雙引號之間的區別](http://stackoverflow.com/q/6697753/3776858) – Cyrus

回答

3

它與sem或GNU並行沒有任何關係,但與shell有關。

當您爲字符串使用雙引號時,shell一次性擴展所有環境變量引用。如果使用單引號字符串,shell不會執行該變量擴展。

相關問題