如何在shell脚本中将带有空格的单词作为整个名称分配给变量?

如何在shell脚本中将带有空格的单词作为整个名称分配给变量?

我需要制作一些作者姓名的目录。单独做时很容易。我可以简单地

mkdir "Mario Luis Garcia"

这将创建一个名为“Mario Luis Garcia”的目录

但是当我尝试使用 shell 脚本进行大规模操作时,我失败了。

for i in "Mario Luis Garcia" "etc.";
    do 
        mkdir $i
    done;

这将创建 4 个单独的目录而不是 2 个。我尝试使用{},()将引用的文本括起来。不起作用。

怎么做?

答案1

您需要用双引号引用变量扩展:

mkdir "$i"

(使用单引号'$i'将创建一个名为 的目录$i

如果名称可以以 开头-,您还应该--在最后一个选项参数之后添加,表明所有其他参数都不是选项,这意味着在这种情况下它们是目录名称:

mkdir -- "$i"

或者,使用选项-v(详细)例如:

mkdir -v -- "$i"

相关内容