![쉘 스크립트 명령에서 공백이 있는 변수를 사용하는 올바른 방법은 무엇입니까? [복사]](https://linux55.com/image/8496/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20%EA%B3%B5%EB%B0%B1%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EC%98%AC%EB%B0%94%EB%A5%B8%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
RHEL bash 스크립트의 svn 명령에 사용되는 변수의 일부로 공백을 포함하는 방법은 무엇입니까? 혹은 아래 내용에 문제가 있는 경우 알려주시기 바랍니다.
SVN URL 변수에는 공백이 없으며 다음 부분이 유효합니다.
svn checkout $svnUrl $checkoutDir --username $username --password $password --non-interactive --depth immediates --no-auth-cache
그러나 하드코딩 시 작동하는 SVN 업데이트 명령은 변수로 작동하지 않습니다.
updateSubProject="&& svn update --set-depth infinity --no-auth-cache --username $username --password $password --non-interactive"
cd project-dir $updateSubProject
cd ../another-project $updateSubProject
답변1
더 나은 접근 방식은 이를 수행하는 함수를 만드는 것입니다.
updateSubProject() {
pushd "$1"
svn checkout "$svnUrl" "$checkoutDir" --username "$username" --password "$password" --non-interactive --depth immediates --no-auth-cache
popd
}
updateSubProject project-dir
updateSubProject path/to/another-project
이렇게 하면 코드를 변수에 저장하려고 하지 않고 많은 단어 분리 문제를 피할 수 있습니다.
답변2
변수에 저장된 명령을 실행하려고 할 수 있으므로
eval "$updateSubProject"
변수에서 이중 &를 제거하고 다음을 실행하십시오.
cd project-dir && eval "$updateSubProject"