공백을 처리할 수 있을 만큼 강력한 스크립트를 작성하려고 합니다.
현재 for 루프에 있지만 문제는 이름에 공백이 있는 폴더입니다.
ASOURCE="Home Photos 2012 camcorder" #example filename
if [ -d "$(echo $ASOURCE)" ] # If directory exists
then
#command
else
echo "File does not exist: " $1 #Error
echo "DIR :" $(echo $ASOURCE | sed 's/\ /\\ /g')
fi
확인에 실패했습니다. 사전에 공간에서 탈출을 시도했지만 소용이 없었습니다.
답변1
당신은해야언제나(*) 특히 임의의 사용자 입력이 포함된 경우 변수를 참조하세요.
이 경우 다음 스크립트를 사용하여 작성하면세게 때리다, 이중 괄호를 사용하면 따옴표가 필요하지 않습니다(bash는 이에 대해 똑똑합니다). 그리고 printf "%q"
bash를 사용하여 이스케이프가 필요한 항목을 이스케이프 처리합니다.
ASOURCE="Home Photos 2012 camcorder" #example filename
if [[ -d $ASOURCE ]]; then
# directory exists
:
else
# Note how these vars are quoted:
echo "File does not exist: $1"
printf "DIR : %q\n" "$ASOURCE"
fi
(*) 당신이 모르는 한정확히참조하고 싶지 않을 때.