Bash 폴더 확장에 작은따옴표를 포함하는 방법은 무엇입니까?

Bash 폴더 확장에 작은따옴표를 포함하는 방법은 무엇입니까?

편집됨*

내 Bash 스크립트에는 다음과 같은 정의가 있습니다.

DATE_SUFIX=$(date +%F_%H-%M-%S)
NAME="MyBackup_"
FILE_NAME=$NAME$DATE_SUFIX
TMP_DIR="/tmp/"
TMP_BKP=$TMP_DIR$NOME_ARQ"/"
TAR_CMD="tar czPf "

다음과 같은 디렉토리 목록을 만듭니다.

FOLDER_LIST[0]="/opt"
FOLDER_LIST[1]="/etc/apache2/sites-available"
FOLDER_LIST[2]="/home/user"

그런 다음 이 루프를 사용하여 이 목록을 반복합니다.

mkdir $TMP_BKP
for ix in ${!FOLDER_LIST[*]}
do
    CMD=$TAR_CMD$TMP_BKP$(basename ${FOLDER_LIST[$ix]})".tar.gz "${FOLDER_LIST[$ix]}"/* "$EXCLUDE
    echo $CMD
done

$EXCLUDE 부분을 생성하는 코드도 있습니다. 저도 그렇게 해요. 하지만 이 질문에 대한 코드의 관련 부분은 다음 "${FOLDER_LIST[$ix]}"/*과 같이 확장되는 CMD 부분입니다.

"/home/user/mybackupfolder/foo /home/user/mybackupfolder/bar ..."

문제는 확장된 하위 폴더 중 하나에 공백이 있다는 것입니다. 이로 인해 다음이 생성됩니다.

"/home/user/mybackupfolder/foo /home/user/mybackupfolder/bar /home/user/mybackupfolder/my spaced dir"

이로 인해 다음 작업이 중단됩니다. 이걸 어떻게 확장할 수 있나요? -

"'/home/user/mybackupfolder/foo' '/home/user/mybackupfolder/bar' '/home/user/mybackupfolder/my spaced dir'"

답변1

(댓글 스레드에서 선택한 답변)

견적이 누락되었거나 잘못 적용된 경우인 것으로 보입니다. 문자열에 따옴표를 넣고 쉘이 결과를 따옴표 붙은 문자열로 해석하도록 할 수는 없습니다.

제발 읽어보시길 권합니다BashFAQ #50: 명령을 변수에 넣으려고 하는데 복잡한 경우에는 항상 실패합니다!도움이 되는지 확인해 보세요.

관련 정보