2016-09-07 3 views
0

ich die Ausgabe von fswatch auf mehrere Befehle in einem Shell-Skript mit folgenden Technik Rohr versuchen:Rohr fswatch Ausgang in einen Shell-Skript

$ fswatch -0 [opts] [paths] | xargs -0 -n 1 -I {} [command] 

Statt [Befehl] ich den Shell-Skript Pfad setzen. Hier ist meine Befehlszeile:

fswatch -0 -Ie ".*\.*$" -i ".*\.mp4$" ~/Desktop/encoding\ tests | xargs -0 -n 1 -I {} ~/Desktop/s3cmd.sh 

Das Skript folgt:

#!/bin/sh 
terminal-notifier -message "s3cmd Upload {}" ; 
s3cmd sync --acl-public -m video/mp4 --add-header=Cache-Control:public,max-age=2052000 {} s3://saltanat-test/ && 
terminal-notifier -message "s3cmd Upload of {} done" 

Sorry, ich bin nicht mit Shell-Skripten erlebt. Wie kann ich die fswatch-Ausgabe in das Skript leiten?

Vielen Dank.

+0

Die '{}' werden in einem Shell-Skript nicht erkannt, aber Sie können sie durch '$ {@}' oder enger '$ 1' ersetzen. Ich hatte seit einiger Zeit keinen Grund mehr, das zu nutzen, aber es sollte funktionieren. Viel Glück. – shellter

+0

Leider funktioniert es nicht. Weder mit '$ {@}' noch mit '$ 1'. Aber danke für deine Antwort. Ich dachte mir, vielleicht könnte der Lesebefehl helfen: 'lese {}'. Aber auch kein Erfolg. – saltarob

+0

Also meine ich '#!/Bin/sh; terminal-notifier -message "s3cmd Hochladen $ {@}"; ... $ {@} ...; .... $ {@} ... etc' ODER '... terminal-notifier -message" s3cmd Upload $ {1} "; ... usw. Viel Glück. – shellter

Antwort

0
#!/bin/bash 
fswatch -0 -x --event Created --event Updated --event Renamed -Ie '.*\.*$' -i '.*\.mp4$' ~/Desktop/encoding\ tests \ 
    | xargs -0 -n 1 ~/Desktop/s3cmd-3.sh 

Dies funktioniert. Vielen Dank.