Chodzi o to, aby użyć go jako ... potoku w poleceniu. Na przykład: powiedzmy, że istnieje jakaś długa ścieżka, którą trzeba wielokrotnie powtarzać, a następnie potok i drugi program, tj.
"directory1/directory2/direcotry3/file.dat | less -I "
Chciałbym, aby ta część była przechowywana w zmiennej, aby można ją było użyć w następujący sposób:
r="directory1/directory2/direcotry3 \| less -I -p "
$ cat path1/path2/$r <searchterm>
Zamiast tego rozumiem
cat: invalid option -- I
Try `cat --help' for more information.
... co oznacza, że rura najwyraźniej nie działała.
eval
, zwykle tworzysz funkcję.Odpowiedzi:
bash nie interpretuje całkowicie wiersza poleceń po rozwinięciu zmiennych. Aby to wymusić, umieść
eval
na wierzchu:Niemniej jednak istnieją bardziej eleganckie sposoby (aliasy, funkcje itp.).
źródło
Próbujesz łączyć kod i dane, co nie jest dobrym pomysłem. Zamiast tego zdefiniuj funkcję, która pobiera nazwę pliku (katalogu?) Jako argument i wyświetla go za pomocą
less
.źródło