小编sco*_*ame的帖子

从命令行向ERB传递绑定或参数

我最近一直在使用命令行中的erb.我想制作一个简单的简单erb模板,例如以下内容:

<%- name = "Joe"; quality = "fantastic" -%>
Hello. My name is <%= name %>. I hope your day is <%= quality %>.
Run Code Online (Sandbox Code Playgroud)

如果我跑,这是有效的

erb -T - thatfile.erb
Run Code Online (Sandbox Code Playgroud)

我想做的是从命令行参数中创建namequality通过,这样我就可以执行以下操作:

./thatfile.erb "Bill" "super"
Run Code Online (Sandbox Code Playgroud)

从bash提示符做同样的事情.

我知道我可以编写一个ruby脚本,只读取该模板然后使用ERB.new(File.read("thatfile.erb")).result(binding),或者在END执行之后编写模板,但我正在寻找一种更轻量级的方法,如果它存在,因为我不我想为我为此创建的每个erb脚本编写两个文件.

ruby templates erb

14
推荐指数
4
解决办法
1万
查看次数

Clang 无法编译 c11 程序,理由是“隐式声明在 c99 中是非法的”

我编写了这个微不足道的小程序来演示我的问题(标题为hello.c)(旁注:我注意到此程序中存在内存泄漏,但这只是一个示例,因此并不重要):

#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char ** argv) {
    char * buf = NULL;
    size_t buflen = 0;

    ssize_t line_len;

    while ((line_len = getline(&buf, &buflen, stdin)) > 0) {
        buf[line_len - 1] = '\0';

        char * val = getenv(buf);

        if (val) {
            printf("setenv %s \"%s\"\n", buf, val);
        }
        else {
            fprintf(stderr, "warning: %s not found\n", buf);
        }
    }

    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

这在 Linux 下编译得很好,使用带有以下 makefile 的 gcc 和 gnu make:

CFLAGS += -std=c11 …
Run Code Online (Sandbox Code Playgroud)

c posix clang

5
推荐指数
1
解决办法
2901
查看次数

标签 统计

c ×1

clang ×1

erb ×1

posix ×1

ruby ×1

templates ×1