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

Zen*_*Zen 1 shell shell-script

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

mkdir "Mario Luis Garcia"
Run Code Online (Sandbox Code Playgroud)

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

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

for i in "Mario Luis Garcia" "etc.";
    do 
        mkdir $i
    done;
Run Code Online (Sandbox Code Playgroud)

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

怎么做?

Vol*_*gel 8

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

mkdir "$i"

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

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

mkdir -- "$i"

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

mkdir -v -- "$i"