Bash le permite colocar cuerdas adyacentes, y que sólo va a terminar siendo pegadas entre sí.
Así que esto:
$ echo "Hello"', world!'
produce
Hello, world!
El truco es alternar entre las cadenas individuales y entre comillas dobles si es necesario. Desafortunadamente, rápidamente se vuelve muy complicado.Por ejemplo:
$ echo "I like to use" '"double quotes"' "sometimes"
produce
I like to use "double quotes" sometimes
En su ejemplo, lo haría algo como esto:
$ 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
que produce el siguiente resultado:
load data local infile "'gfpoint.csv'" into table example FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY "'\n'" IGNORE 1 LINES
Es difícil ver lo que está pasando aquí, pero puede anotar que el uso de citas Unicode. El siguiente no funcionará en bash - es sólo para la ilustración:
dbload=
'load data local infile "
'‘'gfpoint.csv'
’' " into
'‘table $dbtable FIELDS TERMINATED BY ',' ENCLOSED BY '
’' "
'‘' LINES
’' TERMINATED BY "
'‘'\n'
’' " IGNORE 1 LINES
'
Las citas como "''" en lo anterior serán interpretadas por bash. Las cotizaciones como " '
terminarán en la variable resultante.
Si doy el mismo tratamiento al ejemplo anterior, se ve así:
$ echo
“I like to use
”
‘"double quotes"
’
“sometimes
”
, debe familiarizarse con el concepto de [Inyección SQL] (http: // en. wikipedia.org/wiki/SQL_injection) antes de comenzar a escribir código como este. – Daenyth
También vea http://mywiki.wooledge.org/BashFAQ/050 –
posible duplicado de [Escapar comillas simples dentro de cadenas entre comillas simples] (http://stackoverflow.com/questions/1250079/escaping-single-quotes- within-single-quote-strings) – kenorb