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)"
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)?
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)"
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.
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)$
Tags bash