【发布时间】:2014-09-11 06:25:38
【问题描述】:
以下命令在 bash 中抛出 unterminated substitute pattern 错误:
eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'")
但并不适合所有人。 Linux 显然工作正常。 Mac 抛出未终止的替换模式错误。
我如何重新组织以完成这项工作?
这是整个 bash 命令(目标是干净地将当前 MySQL 设置输出到 my.cnf):
{
# Print version, user, host and time
echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `
mysql -V | sed 's,^.*\(V.*\)\, for.*,\1,'
` - By: `logname`@`hostname -f` on `date +%c`\n##"
for l in {a..z}; do
# Get mysql global variables starting with $l
echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" |
# Transorm it
sed 's,\t,^= ,' |
column -ts^ |
tr "\n" '@' |
eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") |
eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") |
tr '@' "\n" |
sed 's,^,# ,g'
done
echo -e "#\n##\n# MYSQL VARIABLES }}}1";
} | tee ~/mysql-variables.log
【问题讨论】:
-
我提供的原始答案是有效的。切断输出的新问题是完全独立的,与
sed 's,\t,^= ,'有关 -
你为什么在这里使用
eval?
标签: regex macos bash sed terminal