Bash for循环 - 在n之后命名(这是用户的输入)

时间:2013-02-14 08:13:04

标签: bash

我正在循环使用for i in {1..n}循环的命令,并希望输出文件具有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 个答案:

答案 0 :(得分:5)

使用"C-style" for-loop

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

请注意,$number之前的ifor不需要{{1}},但需要double-parentheses

答案 1 :(得分:2)

for循环中的range参数仅适用于常量值。因此,请将{1..$num}替换为以下值:{1..10}

OR

将for循环更改为:

  for((i=1;i<=number;i++))

答案 2 :(得分:0)

你可以使用一个简单的for循环(类似于C,C ++等语言中的那些):

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

答案 3 :(得分:-1)

请尝试使用seq (1)。与for i in $(seq 1 $number)中一样。