脚本 - 带空格的文件夹

脚本 - 带空格的文件夹

我正在尝试编写一个足够强大的脚本来处理空格。

它目前处于 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

(*) 除非您知道确切地当你不想引用它们时。

相关内容