bash não reinterpreta completamente a linha de comando depois de expandir as variáveis. Para forçar isso, coloque eval
na frente:
r="directory1/directory2/direcotry3/file.dat | less -I "
eval "cat path1/path2/$r"
No entanto, existem maneiras mais elegantes de fazer isso (aliases, funções, etc.).