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 кавычки. Ниже не будет работать в Баш - это просто для иллюстрации:
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
»
Вы должны ознакомиться с концепцией [инъекции SQL] (HTTP: // эн. wikipedia.org/wiki/SQL_injection), прежде чем вы начнете писать такой код. – Daenyth
Также см. Http://mywiki.wooledge.org/BashFAQ/050 –
возможный дубликат [Экранирование одиночных кавычек в строках с одним кавычком] (http://stackoverflow.com/questions/1250079/escaping-single-quotes- внутри-одиночных кавычек) – kenorb