Die Idee wäre, es als ... Pipe in einem Befehl zu verwenden. Zum Beispiel: Angenommen, es gibt einen langen Pfad, der immer wieder neu eingegeben werden muss, gefolgt von einer Pipe und einem zweiten Programm, d. H.
"directory1/directory2/direcotry3/file.dat | less -I "
Ich möchte, dass dieser Teil in einer Variablen gespeichert wird, damit er folgendermaßen verwendet werden kann:
r="directory1/directory2/direcotry3 \| less -I -p "
$ cat path1/path2/$r <searchterm>
Stattdessen bekomme ich
cat: invalid option -- I
Try `cat --help' for more information.
... was bedeutet, dass die Pfeife eindeutig nicht funktioniert hat.
eval
, machen Sie normalerweise eine Funktion.Antworten:
bash interpretiert die Befehlszeile nach dem Erweitern von Variablen nicht vollständig neu. Um dies zu erzwingen, setzen Sie
eval
vor:Es gibt jedoch elegantere Möglichkeiten, dies zu tun (Aliase, Funktionen usw.).
quelle
Sie versuchen, Code und Daten zu mischen, was keine gute Idee ist. Definieren Sie stattdessen eine Funktion, die einen Dateinamen (Verzeichnis?) Als Argument verwendet und mit anzeigt
less
.quelle