![병렬 처리를 사용하여 여러 파일을 디렉터리에 복사](https://linux55.com/image/26872/%EB%B3%91%EB%A0%AC%20%EC%B2%98%EB%A6%AC%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%97%AC%EB%9F%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%20%EB%B3%B5%EC%82%AC.png)
다음 스크립트를 사용하여 여러 파일을 폴더에 복사합니다.
{ echo $BASE1; echo $BASE2; echo $BASE3; } | parallel cp -a {} $DEST
중괄호 확장과 함께 echo $BASE를 사용하는 방법이 있나요?
내 말은 이것이다:
{ echo $BASE{1..3} } | parallel cp -a {} $DEST
답변1
배열을 사용할 수 있습니다.
BASES[0]=...
BASES[1]=...
BASES[2]=...
# or BASES+=(...)
# or BASES=(foo bar baz)
echo "${BASES[@]}" | parallel cp -a {} $DEST
더 안전하게 만들려면(특히 변수에 공백과 개행 문자가 있는 경우) 다음과 같은 것이 더 안정적이어야 합니다.
printf "%s\0" "${BASES[@]}" | parallel -0 cp -a {} "$DEST"
참고: 배열은 POSIX에 없지만 현재 버전의 bash 및 ksh에서 작동합니다.
답변2
printf
대신 을 사용하여 echo
원하는 개행 문자를 얻을 수 있습니다.
env printf "%s\n" $BASE{1..3} | parallel cp -a {} $DEST