Übergeben Sie eine Zeichenfolge mit Leerzeichen als argument für eine Bash-Funktion
Gegeben Sie die folgende Zeichenfolge variable
VAR="foo bar"
Muss ich es übergeben werden, um eine bash-Funktion ist, und greift wie gewohnt über $1
. Bisher habe ich noch nicht in der Lage gewesen, um herauszufinden, wie es zu tun:
#!/bin/bash
function testfn(){
echo "in function: $1"
}
VAR="foo bar"
echo "desired output is:"
echo "$(testfn 'foo bar')"
echo "Now, what about a version with \$VAR?"
echo "Note, by the way, that the following doesn't do the right thing:"
echo $(testfn "foo bar") #prints: "in function: foo bar"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bash ist smart und Paaren von doppelten Anführungszeichen entsprechen, entweder innerhalb oder außerhalb eines
$( ... )
Struktur.Daher
echo "$(testfn "foo bar")"
gültig ist, und das Ergebnis Ihrertestfn
Funktion wird nur dann betrachtet werden als ein einziges argument an dieecho
internen Befehl.echo "(testfn "$VAR")"
funktioniert Prima.