我正在尝试编写一个足够强大的脚本来处理空格。
它目前处于 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
(*) 除非您知道确切地当你不想引用它们时。