한 번에 실행하기 전에 일부 매개 변수를 기반으로 문자열로 명령 줄을 작성하는 bash 스크립트가 있습니다. 명령 문자열에 연결된 부분은 각 구성 요소를 통한 데이터의 "스트리밍"을 용이하게하기 위해 파이프로 구분됩니다.
매우 간단한 예 :
#!/bin/bash
part1=gzip -c
part2=some_other_command
cmd="cat infile"
if [ ! "$part1" = "" ]
then
cmd+=" | $part1"
fi
if [ ! "$part2" = "" ]
then
cmd+=" | $part2"
fi
cmd+="> outfile"
#show command. It looks ok
echo $cmd
#run the command. fails with pipes
$cmd
어떤 이유로 파이프가 작동하지 않는 것 같습니다. 이 스크립트를 실행하면 일반적으로 명령의 첫 번째 부분 (첫 번째 파이프 이전)과 관련된 다른 오류 메시지가 표시됩니다.
그래서 내 질문은 이런 식으로 명령을 작성할 수 있는지 여부와 가장 좋은 방법은 무엇입니까?
infile
현재 디렉토리에 있다고 가정해도 안전 합니까?