Substitui automaticamente caracteres especiais em input / bash?

0

Digamos que eu tenha o seguinte no meu .bashrc

test1() { echo $@; }

e quero que o seguinte seja executado no meu terminal

test1 1 and (2 and 3)

qual deve sair

1 and (2 and 3)

Mas isso só me dá um erro de sintaxe, por causa dos colchetes. Existe alguma maneira de corrigir isso, além de usar

test1 "1 and (2 and 3)"

Talvez com a primeira substituição de todos os caracteres especiais (como os colchetes)?

    
por JohnSilver345 08.10.2014 / 16:58

3 respostas

0

Você pode remover o significado especial dos colchetes usando barra invertida:

test1 1 and \(2 and 3\)

Ou cite o texto entre colchetes:

test1 1 and "(2 and 3)"
    
por 08.10.2014 / 17:14
0
test1 "1 and (2 and 3)"

... fornecerá a saída esperada.

Referência: link - > "Subshells"

O que está dentro de parantheses não citados no bash, é lançado como um subshell, em paralelo com o shell atualmente em execução.

    
por 08.10.2014 / 17:14
0

Não está totalmente claro qual é o seu objetivo. Dado isso, isso pode ser o que você quer:

(shell prompt)$ test1() { printf "data? "; read -r tdata && printf "%s\n" "$tdata"; }
(shell prompt)$ 
(shell prompt)$ test1
data? 1 and (2 and 3)           (You type the part in bold.)
1 and (2 and 3)                 (Your test1 function repeats your input back to you.)
(shell prompt)$ 
    
por 08.10.2014 / 23:48

Tags