やりたいこと
シェルのヒアドキュメントでSQLを実行し、replace関数を使って空白に \ (バックスラッシュ)を付けたい。
発生している問題
以下に示す通りうまく実行できない。
##データ
create table test ( name varchar(10) ); insert into test values ('A A'), ('B B B');
コードと結果(期待通り)
mysql> select replace(name, ' ', '\\ ') from test; +---------------------------+ | replace(name, ' ', '\\ ') | +---------------------------+ | A\ A | | B\ B\ B | +---------------------------+ 2 rows in set (0.00 sec)
コードと結果(期待はずれ)
$ cat test1.sh #!/bin/sh mysql -N -uroot -ptest testdb<<__EOF__ select replace(name, ' ', '\\ ') from test __EOF__ $ sh test1.sh A A B B B
コードと結果(期待はずれ)
$ cat test2.sh #!/bin/sh mysql -N -uroot -ptest testdb<<__EOF__ select replace(name, ' ', '\\\ ') from test __EOF__ $ sh test2.sh A\\ A B\\ B\\ B
コードと結果(期待はずれ)
$ cat test3.sh #!/bin/sh mysql -N -uroot -ptest testdb<<__EOF__ select replace(name, ' ', '\\\\ ') from test __EOF__ $ sh test3.sh A\\ A B\\ B\\ B
期待する結果
$ test.sh A\ A B\ B\ B
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/03 07:02
2017/03/03 07:53