Como aceito uma string de entrada no bash sem perder as aspas?

0

Exemplo, Eu tenho essa função no meu .profile:

alias () {
    command alias "$@"
}

No entanto, isso é executado:

$ alias test=ls

se eu correr $ alias test="ls"

Como posso aceitar a string com aspas?

    
por yask 01.04.2016 / 17:15

1 resposta

2

As aspas duplas na linha de comando são comidas pelo analisador. Quando você invoca sua função, você deve ou citar a expressão de alias inteira, ou escapar de cada aspas duplas com uma barra invertida (ou usar uma mistura de tokens escapados e citados). Assim:

alias foo='echo "hi there"'
alias bar="echo "\"hi\ there\"

Se você estiver tentando redefinir o alias para poder incluir espaços no lado direito do seu alias, deverá usar

command alias "$*"

A diferença é que esta versão expande todos os parâmetros posicionais, cada um separado por um espaço (primeiro caractere do IFS), como um único argumento para alias . Isso permite que você faça algo como

alias foo=echo over here
    
por 01.04.2016 / 18:09