Como desabilito a expansão do nome do caminho no bash?

3

Suponha que eu seja um vagabundo preguiçoso e queira evitar colocar todas aspas entre aspas ao passar argumentos para uma função, como evito que os caracteres * e ? sejam usados pelo bash para expansão de nomes de patches?

Exemplo simplificado:

fn () {
    echo ""
}
# shopt -s option - disable * and ?
fn not/*/expanded
fn neither\ should\ this/be/expanded?
fn 'accepted too*'
# shopt -u option - enable * and ?

Isso deve produzir:

not/*/expanded
neither should this/be/expanded?
accepted too*
    
por Lekensteyn 07.05.2011 / 17:40

1 resposta

6

A opção que você está procurando é noglob e deve ser definida usando o shell set embutido.

Para ativá-lo:

set -o noglob

Para desativá-lo:

set +o noglob

Ou também com set -f e set +f .

Ainda outro método:

shopt -os noglob

e

shopt -ou noglob
    
por enzotib 07.05.2011 / 18:02