2

コマンドで使用したい文字列 (a_001 a_002 a_003 など) のリストがあり、実行するたびに 1 つの文字列を引いたものを使用します。つまり、最初に 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

文字列のセットが与えられた場合、 for each inSを使用します。S - {x}xS

1 つの方法を次に示します。

 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 に答える