次のようなものがあるとしましょうwp-config.php
。
define('DB_NAME', 'db_name');
define('DB_USER', 'user');
define('DB_PASSWORD', 'pass');
私のbashスクリプトには、次のような設定があります。
#!/usr/bin/bash
# Database config
echo -e "\ndatabase name: \c"
read DB_NAME
sed -i -e "s/define('DB_NAME', );/define('DB_NAME', $DB_NAME);/g" "C:/Apache24/htdocs/test.txt"
しかし、それは動作しません。sed
変数 & は通常、あらかじめ知られていない場合、どのようにdb_name
編集(使用)しますか?user
pass
test.txt
ベストアンサー1
eval "`echo 'NL=qsq' | tr 'qs' '\047\012'`"; # newline
echo DB_NAME; read DB_NAME;
db_name_esc=$DB_NAME
db_name_esc=${db_name_esc//\\/\\\\\\\\} # escape backslash
db_name_esc=${db_name_esc//\'/\\\\\'} # escape single quote
db_name_esc=${db_name_esc//\"/\\\"} # escape double quote
db_name_esc=${db_name_esc//&/\\&} # escape & special to sed
db_name_esc=${db_name_esc//\//\\\/} # escape / special to s///
db_name_esc=${db_name_esc//${NL}/\\${NL}} # esc literal newline for sed
# and then plug in your variables properly escaped for both PHP+sed
sed -e "
s/\\(define('DB_NAME',\\).*/\\1 '$db_name_esc');/
" yourfile