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
」