小编Wil*_*lem的帖子

如何将文件的内容作为宏的参数包含在内?

我正在尝试实现一个 Lisp 版本的Processing,为此我正在使用macro_lispcrate 在编译时将 Lisp 代码转换为 Rust。

当我像这样构建我的代码时,它会起作用:

主文件

fn main() {
    include!("hello.lisp");
}
Run Code Online (Sandbox Code Playgroud)

你好.lisp

fn main() {
    include!("hello.lisp");
}
Run Code Online (Sandbox Code Playgroud)

请注意,我必须将hello.lispin lisp!()、 in的内容包装起来hello.lisp本身。

我希望它的结构如下:

主文件

fn main() {
    lisp!(include!("hello.lisp"));
}
Run Code Online (Sandbox Code Playgroud)

你好.lisp

println "hello"
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误:

lisp!(println "hello")
Run Code Online (Sandbox Code Playgroud)

那里不应该有 EOF,应该有 hello "list".

我究竟做错了什么?我需要打补丁macro_lisp吗?

macros rust

6
推荐指数
2
解决办法
610
查看次数

检查是否可以在Bourne shell中以sudo身份运行命令?

我正在编写一个Bourne shell部署脚本,它以root身份运行一些命令,一些命令以当前用户身份运行.我希望不以root身份运行所有命令,并且如果我需要的命令可用于root(以防止中止的半完成部署),请提前检查.

为了做到这一点,我想创建一个函数来检查命令是否可以作为root运行.我的想法是这样做:

sudo_command() {
    sudo sh -c 'type "$1"'
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

required_sudo_commands="cp rm apt"
for command in $required_sudo_commands do
    sudo_command "$command" || (
        echo "missing required command: $command;
        exit 1;
    )
done
Run Code Online (Sandbox Code Playgroud)

你可能会在我的问题中猜到:它不起作用.你们有没有看到我在这里做错了什么?

我试着在sudo_command中单独运行命令,但奇迹般地(对我来说)确实有效.但是,当我将命令放入一个单独的文件时,它不起作用.

unix shell sh

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

标签 统计

macros ×1

rust ×1

sh ×1

shell ×1

unix ×1