아이디어는 ... 명령에서 파이프로 사용하는 것입니다. 예를 들어, 계속해서 다시 입력해야 하는 일종의 긴 경로가 있고 파이프와 두 번째 프로그램이 있다고 가정합니다.
"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>