Wenn ich die folgende Zeile-Schleife ausführen, bekomme ich die erwartete Ausgabe.Bash edit-and-execute-Befehl echo
for index in $(seq 1 5) ; do echo "$(date +"%Y%m%d" -d "20160301 $index day")"; done
20160302
20160303
20160304
20160305
20160306
Aber wenn ich bash edit-und-Ausführen-Befehl (Steuer - x, Steuer - e) verwenden und geben Sie die gleiche Leitungsschleife, ich Ausgabe mit unerwarteten Befehle hallte durch.
for index in $(seq 1 5) ; do echo "$(date +"%Y%m%d" -d "20160301 $index day")"; done
seq 1 5
date +"%Y%m%d" -d "20160301 $index day"
20160302
date +"%Y%m%d" -d "20160301 $index day"
20160303
date +"%Y%m%d" -d "20160301 $index day"
20160304
date +"%Y%m%d" -d "20160301 $index day"
20160305
date +"%Y%m%d" -d "20160301 $index day"
20160306
Ich habe export EDITOR=vim
in meinem .bash_profile
.
-Update mit komplizierterem Beispiel als Reaktion auf einen Kommentar von @ l'L'l
I Unterschalen benutzen, weil der eigentliche Befehl ist ein gutes Stück mehr zu tun ..
for index in $(seq 1 10) ; do td=`date +"%Y%m%d" -d "20160301 $index day"`; echo "$td: $(grep "$td" *gprs.csv | wc -l)" ; done
Wie beim einfacheren Beispiel ist das Einfügen in die Befehlszeile OK, aber die Verwendung des Befehls edit-and-execute gibt viele Echos dazwischen.
Ich bin schon mit einem Skript daran vorbeigegangen (weil natürlich das Problem noch komplizierter wurde), aber ich bin immer noch interessiert zu wissen, ob es eine einfache Lösung dafür gibt (edit-and-execute-command doesn ' t scheint so nützlich, wenn die Ausgabe nicht klar ist).
es vielleicht setzt 'set -v', wenn wir den Editor aufrufen. Als solche gehen sie zu 'stderr'. – anishsane
Entfernen Sie das '' 'um den' date' Befehl: 'echo $ (date ...);'. –
@RenaudPacalet: Der Befehl ist in Ordnung, obwohl es unklar ist, warum Sie eine Untershell benötigen, 'do date .. . 'sollte funktionieren. Getestet mit' vim', 'emacs' und' nano' - alle werden korrekt nach edit und exec ausgegeben. –