Bash дозволяє розміщувати рядки поруч, і вони просто закінчуються склеюванням.
Отже це:
$ echo "Hello"', world!'
виробляє
Hello, world!
Хитрість полягає в тому, щоб по черзі чергувати одинарний та подвійний цитування рядків. На жаль, він швидко стає безладним. Наприклад:
$ echo "I like to use" '"double quotes"' "sometimes"
виробляє
I like to use "double quotes" sometimes
У вашому прикладі я зробив би це приблизно так:
$ 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
який дає такий вихід:
load data local infile "'gfpoint.csv'" into table example FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY "'\n'" IGNORE 1 LINES
Важко зрозуміти, що тут відбувається, але я можу зазначити це за допомогою котировок Unicode. Наступне не буде працювати в bash - це лише для ілюстрації:
dbload=
' load data local infile "
' 'gfpoint.csv'
' " into
' table $dbtable FIELDS TERMINATED BY ',' ENCLOSED BY '
' "
' ' LINES
' TERMINATED BY "
' '\n'
' " IGNORE 1 LINES
' ' ' ' ' ' ' ' ' '
Цитати на зразок "" "у наведеному вище будуть інтерпретуватися bash. Цитати на зразок " '
закінчуються в отриманій змінній.
Якщо я даю те саме лікування на попередньому прикладі, це виглядає приблизно так:
$ echo
« I like to use
»
« "double quotes"
»
« sometimes
»