폴더가 아래 스크립트에 있다고 가정하면 누군가가 왜 이것이 작동하지 않는지 말할 수 있습니까? 나는 테스트를 위해 여분의 공간을 벗어나지 만 어떻게 든 에러없이 그것을 좋아하지 않습니다 ...Bash 파일 시스템 디렉토리 테스트 속임수
#!/bin/bash
Base='/tmp/'
Sub='one space/another space/'
declare -a ASub
for argR in "${Sub[@]}"
do
Sub+=($(printf %q "$argR"))
done
clear
echo -n $Base
if [ -d $ExBase ]
then
echo "...OK"
else
echo "...FAIL"
fi
BaseAndSub=$Base$Sub
echo -n $BaseAndSub
if [ -d "$BaseAndSub" ]
then
echo "...OK"
else
echo "...FAIL"
fi
exit 0
이 스크립트로 무엇을 하시겠습니까? –
'ASub'을 선언했지만 결코 사용하지 마십시오. $ {Sub [@]} "'에서'for'argR에'Sub' 배열을 정의/초기화하는 것은 명확하지 않습니다. 고전적으로는 최소한 BaseAndSub = "$ Base/$ Sub"를 사용해야합니다. 나는 그것을 100 % 필요하지는 않을지라도 (그렇지 않으면 절대적으로 명백하고 절대적이지 않다) 달리 쓰지는 않을 것이다. 이름에 인접한 공백이 여러 개 있으면'echo -n $ BaseAndSub'는'echo -n "$ BaseAndSub"가없는 곳의 경로를 잃어 버립니다. 좀 더 자유롭게 큰 따옴표를 사용하십시오. –