パイプ(|)を変数に保存するには?

パイプ(|)を変数に保存するには?

アイデアは...コマンドでパイプとして使用することです。たとえば、何度も何度も何度も入力する必要がある長いパスがあり、パイプと2番目のプログラムがあるとします。

"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"

それにもかかわらず、これを行うよりエレガントな方法(エイリアス、関数など)があります。

おすすめ記事