2016-04-23 6 views
1

Ich kann das folgende Verhalten von sem von GNU Parallel nicht verstehen. Wenn ich einfache Anführungszeichen verwenden, so scheint es gut zu funktionieren:Warum verhält sich sem (GNU parallel) bei einfachen und doppelten Anführungszeichen anders?

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

gibt

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

Allerdings, wenn ich doppelte Anführungszeichen verwenden.

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

das Ergebnis ist

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

, wo es scheint, dass die sleep 5 völlig ignoriert wird.

Kann jemand erklären, warum das passiert? Wird es durch GNU Parallel oder Bash verursacht?

+0

Siehe: [Unterschied zwischen einfachen und doppelten Anführungszeichen in bash] (http://stackoverflow.com/q/6697753/3776858) – Cyrus

Antwort

3

Es hat nichts mit sem oder GNU parallel zu tun, aber alles mit der Shell zu tun.

Wenn Sie doppelte Anführungszeichen für Zeichenfolgen verwenden, erweitert die Shell alle Umgebungsvariablenreferenzen auf einmal. Wenn Sie Strings in Anführungszeichen verwenden, führt die Shell diese Variablenerweiterung nicht aus.

Verwandte Themen