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”