2

我有一个字符串列表(a_001 a_002 a_003 等),我想在命令中使用它,每次运行时减去一个字符串。也就是说,我想运行一个循环,其中第一次包含 a_002 和 a_003,然后是 a_001 和 a_003,然后是 a_001 和 a_002。这可以在bash中设置吗?

4

2 回答 2

1

试试这个 :

#!/bin/bash

x=( a_001 a_002 a_003 )

set -- "${x[@]}"

while [[ $@ ]]; do
    echo "command $@"
    shift
done

是你所期望的吗?

输出

command a_001 a_002 a_003
command a_002 a_003
command a_003
于 2013-03-27T20:57:26.400 回答
0

给定一组字符串S,你想S - {x}为每个xin使用S

这是一种方法:

 S=( a_001 a_002 a_003 )
 set -- "${S[@]}"
 for x; do
     shift                          # Removes x from the positional arguments
     echo "Use $@ without $x"       # Some action involving `S - {x}`
     set -- "$@" "$x"               # Put x back on the end, put
 done
于 2013-03-27T21:10:18.030 回答