我正在编写一个shell,并且从bash,dash和busybox的灰烬中得到意外的解析:
echo "`echo a #`"
Run Code Online (Sandbox Code Playgroud)
a然而,打印
echo "$(echo a #)"
Run Code Online (Sandbox Code Playgroud)
给出了关于错过结账的错误).
如何根据POSIX解析命令替换中的注释?所以,对于命令:
echo "`echo a #`"
Run Code Online (Sandbox Code Playgroud)
和
echo "$(echo a #)"
Run Code Online (Sandbox Code Playgroud)
shell会将注释解析为延伸到命令替换的末尾,还是行的末尾?另外,如果命令替换不是双引号,shell会不同地解析它?最后,还有其他任何构造(在POSIX或bash中),注释可以在这样的引号内开始吗?
如果我有代码:
struct Parent
{
virtual void fn();
};
struct Child : public Parent
{
virtual void fn() override final
{
Parent::fn();
}
};
Run Code Online (Sandbox Code Playgroud)
有没有办法让Parent::fn被final通过,只有当访问Child而无需重新实现fn,从而使其他一些class可以覆盖fn从派生的时候Parent而不是从派生时Child?
喜欢:
struct Child : public Parent
{
virtual void fn() override final = Parent::fn;
};
Run Code Online (Sandbox Code Playgroud)
还是其他一些语法?