Aspas simples ou duplas ao definir um alias?

3

Eu sei que o conteúdo das aspas duplas é expandido, enquanto o conteúdo das aspas simples não é, tal que

echo '$1'

$1

onde

echo "$1"

<the argument - blank in this particular example>

o mesmo que

echo $1

No entanto, a pergunta Bash: Como criar um alias em .bashrc para o awk com parâmetros me levou a perguntar por que aspas duplas e aspas simples not foram usadas ao declarar o alias, assim:

alias cutf="_cutf"

em vez de

alias cutf='_cutf'

Eu teria empregado aspas simples como no último exemplo. A maioria dos exemplos na Web também usa solteiros, a menos que haja alguma expansão necessária. No entanto, neste caso, nenhuma expansão, aos meus olhos, é aparente. É que, neste caso, eles são intercambiáveis, ou aspas duplas são necessárias porque uma definição de função é empregada?

    
por Greenonline 09.03.2015 / 17:55

3 respostas

3

No exemplo que você mencionou, onde a expansão para o alias é uma única palavra que não contém nenhum caractere que esteja sujeito a expansão, não faz diferença como você cita o nome _cutf :

$ alias cutf="_cutf"
$ alias cutf
alias cutf='_cutf'

$ unalias cutf
$ alias cutf='_cutf'
$ alias cutf
alias cutf='_cutf'

$ unalias cutf
$ alias cutf=_cutf
$ alias cutf
alias cutf='_cutf'

Como você pode ver nessa interação, lembrar o valor do alias cutf deu o mesmo resultado a cada vez. Então, sim, os estilos de citações são intercambiáveis aqui.

Não é relevante que a expansão seja para um nome de função: pelo menos com bash, os aliases executam uma substituição textual simples (não é óbvio para mim de que modo definir um alias é útil; chamar diretamente a função subjacente parece apenas tão fácil).

    
por 09.03.2015 / 21:02
7

Esta é uma resposta à questão colocada pelo título (que me trouxe até aqui), e não à questão específica do OP.

Aspas simples são avaliadas dinamicamente:

alias QS='echo $PWD'

As aspas duplas são avaliadas no momento da criação e, a partir de então, nunca são alteradas:

alias QD="echo $PWD"

O mesmo comportamento é encontrado em bash, zsh e, eu acho, em outras shells.

    
por 03.04.2017 / 17:51
1

É simples assim - se não houver variável, os colchetes são intercambiáveis. Shell script, embora muito útil, é também uma linguagem muito simples. Eu (e alguns outros que conheço) tendem a usar aspas duplas por padrão, apenas a partir da força do hábito - e nunca encontrei problemas.

    
por 09.03.2015 / 21:02