Como atribuir palavras com espaços como um nome inteiro à variável no shell script? [duplicado]

1

Eu preciso criar um diretório com o nome do autor. É fácil quando se está sozinho. Eu posso simplesmente

mkdir "Mario Luis Garcia"

Isso criará um diretório chamado "Mario Luis Garcia"

Mas quando tentamos fazer isso massivamente com o shell script, eu falhei.

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

Isso criará 4 diretórios separados em vez de 2. Eu tentei usar {} , () para incluir o texto entre aspas. Não funciona.

Como fazer isso?

    
por Zen 10.08.2014 / 04:37

1 resposta

8

Você precisa citar a expansão da variável entre aspas duplas:

mkdir "$i"

(Usar aspas simples '$i' criaria um diretório chamado $i )

Se os nomes puderem começar com - , você também deve adicionar -- após o último argumento da opção, indicando que todos os outros argumentos não são opções, o que significa que nesse caso eles são nomes de diretórios:

mkdir -- "$i"

Ou, com a opção -v (verbose) por exemplo:

mkdir -v -- "$i"

    
por 10.08.2014 / 04:48