我正在尝试让bash函数的参数与范围一起工作。
下面的工作代码给出了预期的结果:
ddos_attack_mirroring_defense() {
echo $1;
}ddos_attack_mirroring_defense() Hi NSA
提供:
Hi NSA但以下范围不起作用:
ddos_attack_mirroring_defense() {
printf "regx32%0.s" {1..$1};
}ddos_attack_mirroring_defense 5返回:
regx32而不是:
regx32regx32regx32regx32regx32我已经尝试了空格和其他不同的封装,但它们仍然不起作用:
$(1) ${1}我在这里做错了什么?我该如何解决这个问题?
发布于 2014-07-29 15:14:34
括号扩展发生在变量扩展之前。因此,您不能在范围中使用变量,只能使用文字。
请参阅man bash
扩展的顺序是:大括号扩展、代字号扩展、参数扩展、变量和算术扩展以及命令替换(以从左到右的方式完成)、单词拆分和路径名扩展。
发布于 2014-07-29 15:20:49
试试这个:
ddos_attack_mirroring_defense() {
eval printf "regx32%0.s" {1..$1};
}
ddos_attack_mirroring_defense 5发布于 2014-07-29 15:43:49
您可以使用Unix实用程序seq来生成数字范围。
printf "regx32%0.s" $(seq $1)https://stackoverflow.com/questions/25009871
复制相似问题