Ich habe ein Bash-Skript, das eine Befehlszeile in einer Zeichenfolge basierend auf einigen Parametern erstellt, bevor es auf einmal ausgeführt wird. Die Teile, die mit der Befehlszeichenfolge verknüpft sind, sollen durch Pipes getrennt werden, um ein "Streaming" von Daten durch jede Komponente zu ermöglichen.
Ein sehr vereinfachtes Beispiel:
#!/bin/bash
part1=gzip -c
part2=some_other_command
cmd="cat infile"
if [ ! "$part1" = "" ]
then
cmd+=" | $part1"
fi
if [ ! "$part2" = "" ]
then
cmd+=" | $part2"
fi
cmd+="> outfile"
#show command. It looks ok
echo $cmd
#run the command. fails with pipes
$cmd
Aus irgendeinem Grund scheinen die Pfeifen nicht zu funktionieren. Wenn ich dieses Skript ausführe, erhalte ich verschiedene Fehlermeldungen, die sich normalerweise auf den ersten Teil des Befehls beziehen (vor der ersten Pipe).
Meine Frage ist also, ob es möglich ist, einen Befehl auf diese Weise zu erstellen, und wie lässt sich dies am besten erreichen?
infile
es im aktuellen Verzeichnis existiert?