sed 中未终止的 `s' 命令
unterminated `s' command in sed
下面的命令被用在一个简单的 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 returns 为空。
跟进:不幸的是,当我使用双引号时,如pii_ke所述,变量的输出为空/空白。所以那是行不通的。也许这里还有其他问题?
因为 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")'
下面的命令被用在一个简单的 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 returns 为空。
跟进:不幸的是,当我使用双引号时,如pii_ke所述,变量的输出为空/空白。所以那是行不通的。也许这里还有其他问题?
因为 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")'