Идея состоит в том, чтобы использовать его как ... канал в команде. Например: скажем, есть какой-то длинный путь, который нужно набирать снова и снова, после чего следует канал и вторая программа, т.е.
"directory1/directory2/direcotry3/file.dat | less -I "
Я бы хотел, чтобы эта часть была сохранена в переменной, чтобы ее можно было использовать так:
r="directory1/directory2/direcotry3 \| less -I -p "
$ cat path1/path2/$r <searchterm>
Вместо этого я получаю
cat: invalid option -- I
Try `cat --help' for more information.
... то есть труба явно не работала.
eval
, обычно вы делаете функцию.Ответы:
bash не полностью интерпретирует командную строку после раскрытия переменных. Чтобы заставить это, поместите
eval
перед:Тем не менее, есть более элегантные способы сделать это (псевдонимы, функции и т. Д.).
источник
Вы пытаетесь смешать код и данные, что не очень хорошая идея. Вместо этого определите функцию, которая принимает имя файла (каталога?) В качестве аргумента и отображает его с помощью
less
.источник