这个想法是将它用作...命令中的管道。例如:假设有某种长路径,必须一次又一次地重新输入,然后是管道和第二个程序,即
"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.
...这意味着管道显然不起作用。
答案1
bash 在扩展变量后不会完全重新解释命令行。要强制执行此操作,请放在eval
前面:
r="directory1/directory2/direcotry3/file.dat | less -I "
eval "cat path1/path2/$r"
尽管如此,还有更优雅的方法可以做到这一点(别名、函数等)。
答案2
您试图混合代码和数据,这不是一个好主意。相反,定义一个函数,它将文件(目录?)名称作为参数,并用less
.
view () {
less -I -p "$2" $1
}
view directory1/directory2/directory3 <searchterm>