Ich würde gerne die Antwort auf wahrscheinlich ziemlich einfache Frage herausfinden: Ich würde in Anführungszeichenfolgen mit Whitespaces innerhalb als eigenständige Argumente für die Funktion übergeben.Als Argumente an die Funktion übergeben
Es gibt die folgende Datei mit Daten (zum Beispiel):
one
two three
four five six
seven
Und es ist Skript mit 2 einfachen Funktionen:
params_checker()
{
local first_row="$1"
local second_row="$2"
local third_row="$3"
echo "Expected args are:${first_row} ; ${second_row} ; ${third_row}"
echo "All args are:"
for arg in "[email protected]"; do
echo "${arg}"
done
}
read_from_file()
{
local args_string
while read line; do
args_string="${args_string} \"${line}\""
echo "Read row: ${line}"
done < ./test_input
params_checker ${args_string}
}
read_from_file
Mit anderen Worten: Ich mag würde Zeilen von Text erhalten Datei als Argumente für die Funktion params_checker (jede Zeile aus der Datei als anderer Parameter, ich muss Leerzeichen in den Zeilen). Versuchen Sie, kombinierte String zu machen mit zitierte "Substrings" wurde nicht, und Ausgang war:
~/test_sh$ sh test_process.sh
Read row: one
Read row: two three
Read row: four five six
Read row: seven
Expected args are:"one" ; "two ; three"
All args are:
"one"
"two
three"
"four
five
six"
"seven"
Erwartung ist $ 1 = "Eins", $ 2 = "zwei, drei", $ 3 = "vier fünf sechs" ... Das Zitieren von $ {args_string} bei der Übergabe an params_checker ergab ein anderes Ergebnis, die Zeichenfolge wird als einzelnes Argument übergeben.
Könnten Sie bitte helfen, den richtigen Weg zu finden, wie man solche Zeichenfolgen mit Leerzeichen aus Datei als eine andere eigenständige Funktion Argumets übergeben?
Vielen Dank für Ihre Hilfe!
Was ist der Zweck dieser Variablen selbst zuweisen? –
Danke @chepner. Das ist viel sauberer. –