Em bash (interativa padrão do Ubuntu shell ), tudo seguindo uma aspas abertas ( '
) é citado literalmente , até o próximo '
, que é considerado como a cotação de fechamento. Em contraste, vários tipos de expansões de shell são executados dentro de aspas duplas ( "
).
-
Expansão de parâmetro (com
$...
ou${...}
):ek@Io:~$ echo '$HOME ${USER^^*} ${SHELL%%+([[:alnum:]])}' $HOME ${USER^^*} ${SHELL%%+([[:alnum:]])} ek@Io:~$ echo "$HOME ${USER^^*} ${SHELL%%+([[:alnum:]])}" /home/ek EK /bin/
Este é um caso de uso comum para
"
quotes em scripts de shell. Em particular, você pode ter visto ciclos que iteram por meio de nomes de arquivos, expandindo uma variável dentro de aspas duplas, de modo que seja expandida, mas não tem seu valor dividido em palavras separadas. Por exemplo, um comando como este pode ajudar-me a controlar as coisas enquanto preparo muitos arquivos de mídia para movimentação:ek@Io:~$ for d in to\ *; do ls -ld "$d"; du -sh "$d"; done drwxr-x--- 856 ek ek 32768 Mar 29 10:47 to Albums (partial) 308G to Albums (partial) drwxrwxr-x 1191 ek ek 40960 Mar 11 12:56 to Books 21G to Books
-
Substituição de comandos (com
$(...)
ou'...'
) e expansão aritmética (com$((...))
):ek@Io:~$ echo '$(date) 'uname -r' $((2+2))' $(date) 'uname -r' $((2+2)) ek@Io:~$ echo "$(date) 'uname -r' $((2+2))" Sat Apr 4 20:42:37 EDT 2015 3.19.0-11-generic 4
-
Escape de caracteres únicos com
\
é suportado e pode ser útil em"
aspas, mas não é suportado (e geralmente seria inútil) nas citações mais simples de'
:ek@Io:~$ echo '$HOME $HOME \\' $HOME $HOME \\ ek@Io:~$ echo "$HOME $HOME \\" /home/ek $HOME \
-
Expansão do histórico com
!
(se ativado, o que geralmente é quando você está usando o shell interativamente):ek@Io:~$ # this is just a comment (but I could run a command here) ek@Io:~$ echo '!!' !! ek@Io:~$ # this is just another comment (but could be another command) ek@Io:~$ echo "!!" echo "# this is just another comment (but could be another command)" # this is just another comment (but could be another command)
Além disso, um dos motivos mais comuns para usar aspas duplas é citar de forma fácil e intuitiva o texto contendo aspas simples (já que '
não tem nenhum significado especial, dentro de "
quotes):
ek@Io:~$ echo "We'll have the dog's fleas gone soon, you'll see."
We'll have the dog's fleas gone soon, you'll see.
Por fim, embora não seja possível escapar de um texto '
dentro de '
, você pode obter o mesmo resultado finalizando com '
, usando um escape '
( \'
), e continuando citando com '
:
ek@Io:~$ echo '"My $PATH ain'\''t what it used to be," said the stevedore'\''s apprentice.'
"My $PATH ain't what it used to be," said the stevedore's apprentice.