Bash pozwala ci umieszczać łańcuchy obok siebie, a po prostu zostaną sklejone.
Więc to:
$ echo "Hello"', world!'
produkuje
Hello, world!
Sztuczka polega na przełączaniu między ciągami pojedynczymi i podwójnymi w razie potrzeby. Niestety szybko robi się bardzo bałagan. Na przykład:
$ echo "I like to use" '"double quotes"' "sometimes"
produkuje
I like to use "double quotes" sometimes
W twoim przykładzie zrobiłbym coś takiego:
$ dbtable=example
$ dbload='load data local infile "'"'gfpoint.csv'"'" into '"table $dbtable FIELDS TERMINATED BY ',' ENCLOSED BY '"'"'"' LINES "'TERMINATED BY "'"'\n'"'" IGNORE 1 LINES'
$ echo $dbload
co daje następujące dane wyjściowe:
load data local infile "'gfpoint.csv'" into table example FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY "'\n'" IGNORE 1 LINES
Trudno zobaczyć, co się tutaj dzieje, ale mogę to opatrzyć adnotacjami, używając cytatów Unicode. Poniższe nie działa w bash - to tylko dla ilustracji:
dbload=
„ load data local infile "
” „ 'gfpoint.csv'
” „ " into
„ table $dbtable FIELDS TERMINATED BY ',' ENCLOSED BY '
” "
„ ' LINES
„” TERMINATED BY "
„” '\n'
„”" IGNORE 1 LINES
”
Cytaty takie jak „” ”powyżej zostaną zinterpretowane przez bash. Cytaty jak" '
zakończą się w wynikowej zmiennej.
Jeśli podam to samo traktowanie we wcześniejszym przykładzie, wygląda to tak:
$ echo
„ I like to use
”
„ "double quotes"
”
„ sometimes
”