web-dev-qa-db-ja.com

bash for loopでコマンドライン引数範囲を使用すると、引数を含む括弧が出力されます

それはおそらく不完全な質問でしょう。しかし、コマンドライン[bash script]から3つの引数を取得しています。次に、これらをforループで使用しようとしています。

for i in {$1..$2}
    do action1
done

これは動作しないようですが、$1"0"および$22印刷する{0..2}' and callsaction1`は1回だけです。さまざまな例を参照しましたが、これは正しい使用方法のようです。ここで修正する必要があるものを誰か教えてもらえますか?

前もって感謝します。

54

どうですか:

for i in $(eval echo {$1..$2}); do echo $i; done
64
zxt

${@:3}または${@:3:8}を使用して入力をスライスし、ループすることができます

たとえば、3から始まる引数を出力するには

for i in ${@:3} ; do echo $i; done

または、3から始まる8つの引数を出力します(つまり、引数3〜10)。

for i in ${@:3:8} ; do echo $i; done
72
Vijayender

$ @変数を使用しますか?

for i in $@
do
    echo $i
done

1番目と2番目の引数を使用する場合は、

for i in $1 $2 

$ 1と$ 2が整数で、範囲を作成する場合は、C forループ構文(bash)を使用します

for ((i=$1;i<=$2;i++))
do
...
done
17
kurumi

同様の問題がありました。問題は、中括弧「{}」内の$ 1の参照解除にあると思います。次の選択肢は私のために働いた..

#!/bin/bash
for ((i=$1;i<=$2;i++))
do
   ...
done

お役に立てば幸いです。

8
rthere
#/bin/bash
for i
do
  echo Value: $i
done

これにより、スクリプトファイルに指定されたすべての引数がループされます。ループ変数iの後に「do」などを指定しないでください。

0
Rolf Ø