sed中没有未命令的's'命令[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

下面的命令正在一个简单的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

有人可以解释一下我到底做错了什么。我绝不是专家,但我认为这是正确的。我也试过替换'with',但是没有用。没有错误,但是$ defaultpass然后返回空。

后续:遗憾的是,当我使用双引号时,如pii_ke所述,变量的输出为空/空白。所以这不起作用。也许这里有别的错了?

bash shell quoting
1个回答
4
投票

由于vzctl命令的整个第三个参数引用了单引号。你应该将sed命令放在双引号内:

vzctl exec $VEID 'defaultpass=$(cat /var/log/mysqld.log | grep "A temporary password is generated for" | tail -1 | sed -n "s/.*root@localhost: //p")'
© www.soinside.com 2019 - 2024. All rights reserved.