我一直在使用SED(Bash shell)来逃避单引号的问题.
我需要做
$cfg['Servers'][$i]['password'] = '';
Run Code Online (Sandbox Code Playgroud)
成
$cfg['Servers'][$i]['password'] = 'mypassword';
Run Code Online (Sandbox Code Playgroud)
我试过的是:
sed -i "s/$cfg['Servers'][$i]['password'] = '';/$cfg['Servers'][$i]['password'] = '$rootpassword';/g" /usr/share/phpmyadmin/libraries/config.default.bak
Run Code Online (Sandbox Code Playgroud)
最终真的让这条线路变得笨拙.
$cfg['Servers'][$i]['password['Servers'][]['passsword'] = 'mypassword'
Run Code Online (Sandbox Code Playgroud)
我试过'\''来逃避单引号,我认为太阳下的其他所有东西都不能在那里得到它.
任何人都可以指出我可能出现的明显错误吗?
谢谢.
Ken*_*ent 13
而不是逃避,你可以使用\x27单引号.这不仅适用于sed,也适用于awk等.
看测试:
kent$ cat tt
$cfg['Servers'][$i]['password'] = ''
kent$ sed -r 's/(\$cfg\[\x27Servers\x27\]\[\$i\]\[\x27password\x27\] \= \x27)\x27/\1mypassword\x27/g' tt
$cfg['Servers'][$i]['password'] = 'mypassword'
Run Code Online (Sandbox Code Playgroud)
请注意,sed行可能不是解决问题的最佳方法,例如将整个字符串放到"s /../"可能没有必要.但是,我只想说明\ x27是如何工作的.