我有一个我想要启动的bash脚本,使用一些文件作为参数。然后我需要将该列表的每个 nth 文件添加到数组中。
它考虑过使用for
循环,但它似乎只能同时执行这两个中的一个。当然,我希望生成的代码尽可能简单和小巧,但唯一的先决条件是它必须在bash中完成,并且只能使用系统附带的工具。
答案 0 :(得分:2)
您可以使用间接变量引用以数字方式引用参数:
selectedargs=()
n=4
for ((i=1; i<$#; i+=n)); do
selectedargs+=("${!i}")
done
答案 1 :(得分:0)
我认为for
循环非常合适。这里,对于n=9
,我创建一个包含数字0到99的数组,然后使用for循环创建一个包含原始数组的每个第9位的数组:
x=( {0..99} )
y=()
n=9
for ((i=0; i<${#x[@]}; i=i+n)); do
y+=( "${x[i]}" )
done
答案 2 :(得分:0)
由于文件名是参数,您可以使用shift
来丢弃您不想要的参数:
#!/bin/bash
files=()
n=8
while (( $# > 0 )); done
files+=( $1 )
shift $n || shift $#
done
额外的shift
是必要的,因为shift
如果其参数大于剩余参数的数量则不执行任何操作。