2016-04-23 72 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不会执行该变量扩展。

相关问题