2016-05-15 4 views
2

Ich kann diesen pyrg Befehl in Linux erfolgreich ausgeführt:Wie verwende ich bash-spezifische Syntax mit `watch`?

python -m unittest discover |& pyrg 

> ... 
> ---------------------------------------------------------------------- 
> Ran 3 tests in 0.001s 
> 
> OK 

Aber nicht dieses:

watch -n 1 --color 'python -m unittest discover |& pyrg' 

> Each 1.0s python -m unittest discover |& pyrg 
> 
> sh: 1: Syntax error: "&" unexpected 

Auch finde ich nicht, wie mit python -m anstelle eines tatsächlichen pyrg in der anderen Form zu verwenden, Skript:

watch -n 1 --color pyrg python -m unittest discover 

> Usage: pyrg [options] TEST_SCRIPT.py 
>  : python TEST_SCRIPT.py |& pyrg 
> 
> pyrg: error: no such option: -m 

Wie könnte ich das lösen?

+1

@Cyrus danke, retagged – heltonbiker

+1

'sh' weiß nicht' | & 'aber' bash'. – Cyrus

+0

@Cyrus Ich versuchte 'watch -n 1 --color 'bash python -m unittest discover | & pyrg' ' vergeblich. Hast du irgendwelche Vorschläge? – heltonbiker

Antwort

1

Um bash-spezifischen Syntax zu verwenden, müssen Sie sicherstellen, dass Sie Ihren Befehl mit der Bash-Shell ausgeführt:

watch -n 1 --color 'bash -c "python -m unittest discover |& pyrg"' 

Eigentlich , können Sie eine Angebotslevel entfernen:

watch -n 1 --color --exec bash -c 'python -m unittest discover |& pyrg' 
0

Nach man bash:

Wenn | & wird verwendet, der Standardfehler des Befehls wird zusätzlich zu seiner Standardausgabe mit der Standardeingabe von command2 über die Pipe verbunden; Es ist eine Abkürzung für 2> & 1 |. So

, sollte diese Arbeit:

watch -n 1 --color 'python -m unittest discover 2>&1 | pyrg'