5

コマンドをfor i in {1..n}loop でループしており、出力ファイルにn拡張子を付けたいと思っています。

例えば:

  for i in {1..2}
  do cat FILE > ${i}_output
  done

ただしn、ユーザーの入力は次のとおりです。

  echo 'Please enter n'
  read number
  for i in {1.."$number"}
  do 
    commands > ${i}_output
  done

ループは何度もロールオーバーしnます - これは正常に動作しますが、私の出力は次のようになります{1..n}_output

このようなループでファイルに名前を付けるにはどうすればよいですか?

編集

これも試してみました

  for i in {1.."$number"} 
  do
    k=`echo ${n} | tr -d '}' | cut -d "." -f 3`
    commands > ${k}_output
  done

しかし、それは機能していません。

4

4 に答える 4

8

「Cスタイル」のforループを使用します。

echo 'Please enter n'
read number
for ((i = 1; i <= number; i++))
do 
    commands > ${i}_output
done

-loopヘッダーの前または中に$は必要ありませんが、二重括弧が必要であることに注意してください。numberifor

于 2013-02-14T08:21:55.477 に答える
3

forループの範囲パラメーターは定数値でのみ機能します。したがって{1..$num}、次のような値に置き換えます{1..10}

また

forループを次のように変更します。

  for((i=1;i<=number;i++))
于 2013-02-14T08:21:13.943 に答える
0

単純な for ループを使用できます (C、C++ などの言語で見られるものと同様):

echo 'Please enter n'
read number
for (( i=1; i <= $number; i++ ))
do
  commands > ${i}_output
done
于 2013-02-14T08:24:20.060 に答える
-1

seq (1)代わりに使用してみてください。のようにfor i in $(seq 1 $number)

于 2013-02-14T08:16:07.030 に答える