it-swarm.com.de

Wie deaktiviere ich die Pfadnamenerweiterung in Bash?

Angenommen, ich bin ein fauler Penner und möchte vermeiden, dass jeder String in Anführungszeichen gesetzt wird, wenn Argumente an eine Funktion übergeben werden. Wie vermeide ich die Zeichen * und ? wird von Bash für die Erweiterung von Patnamen verwendet?

Vereinfachtes Beispiel:

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

Dies sollte Folgendes ausgeben:

not/*/expanded
neither should this/be/expanded?
accepted too*
3
Lekensteyn

Die Option, nach der Sie suchen, ist noglob und sollte mit der integrierten Shell set festgelegt werden.

So aktivieren Sie es:

set -o noglob

So deaktivieren Sie es:

set +o noglob

Oder auch mit set -f und set +f.

Noch eine andere Methode:

shopt -os noglob

und

shopt -ou noglob
6
enzotib