【发布时间】:2018-05-29 17:50:06
【问题描述】:
在一个简单的 bash 脚本中使用下面的命令来获取 MySQL 5.7 中的临时密码。
vzctl exec $VEID 'defaultpass=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n 's/.*root@localhost: //p')'
但是,当我运行命令进行测试时,它会显示以下内容:
sed: -e expression #1, char 19: unterminated `s' command
谁能解释一下我到底做错了什么。我绝不是专家,但我认为这是正确的。我也尝试用“替换',但这没有用。没有错误,但$defaultpass返回空。
跟进:不幸的是,当我使用双引号时,如 pii_ke 所述,变量的输出为空/空白。所以这是行不通的。也许这里还有其他问题?
【问题讨论】:
-
不确定到底是哪个字符导致了这种情况,但如果你不想引用正则表达式字符,你必须使用
sed -E -
为什么不分成多个命令而不是单个复杂的命令?并且不需要在那里使用
cat.. 只需执行grep 'string' filename