相关疑难解决方法(0)

如何将数组参数传递给Bash脚本

令我惊讶的是,我在1小时后找不到答案.我想将一个数组传递给我的脚本,如下所示:

test.sh argument1 array argument2
Run Code Online (Sandbox Code Playgroud)

我不想把它放在另一个bash脚本中,如下所示:

array=(a b c)
for i in "${array[@]}"
do
  test.sh argument1 $i argument2
done
Run Code Online (Sandbox Code Playgroud)

arrays bash arguments

29
推荐指数
3
解决办法
5万
查看次数

在将参数传递给 sub MAIN 之前更改参数的处理方式

鉴于文档和对较早问题的评论,根据要求,我制作了一个最小的可重现示例,演示了这两个语句之间的区别:

my %*SUB-MAIN-OPTS = :named-anywhere;
PROCESS::<%SUB-MAIN-OPTS><named-anywhere> = True;
Run Code Online (Sandbox Code Playgroud)

给定一个只有这个的脚本文件:

#!/usr/bin/env raku
use MyApp::Tools::CLI;
Run Code Online (Sandbox Code Playgroud)

以及 MyApp/Tools 中名为 CLI.pm6 的模块文件:

#PROCESS::<%SUB-MAIN-OPTS><named-anywhere> = True;
my %*SUB-MAIN-OPTS = :named-anywhere;

proto MAIN(|) is export {*}

multi MAIN( 'add', :h( :$hostnames ) ) {
    for @$hostnames -> $host {
        say $host;
    }
}

multi MAIN( 'remove', *@hostnames ) {
    for @hostnames -> $host {
        say $host;
    }
}
Run Code Online (Sandbox Code Playgroud)

从命令行进行以下调用不会产生可识别的子例程,但会显示用法:

mre.raku add -h=localhost -h=test1
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,切换my %*SUB-MAIN-OPTS = :named-anywhere;PROCESS::<%SUB-MAIN-OPTS><named-anywhere> = True; …

program-entry-point raku

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

标签 统计

arguments ×1

arrays ×1

bash ×1

program-entry-point ×1

raku ×1