Bash中括弧拡張に変数を使用できますか?

Bash中括弧拡張に変数を使用できますか?

私が達成しようとしている作業の一種の疑似コードは次のとおりです。

#!/bin/bash

# I already have the variable below figured out (positive integer):
numlines=$([returns number of lines containing specific characters in a file])

# This is basically what I want to do with it:
for i in {1..$numlines}; do
    # the part below is already figured out as well:        
    do some other stuff
done

「{1..n}」シーケンスに実際の数字を挿入すると、コマンドラインから正しく実行できます。ここに変数を含めることができるかどうか、それを行う方法を知りたいです。

  • 私はすでにexport試しました。
  • 変数自体をシーケンス内の中かっこ内に入れてみました。{1..${numlines}}
  • 私はそれが拡張されることを願って二重引用符で囲んでみました。{1.."$numlines"}
  • 私は脱出しようとしました${1..\$numlines}

set -[something]この変数を拡張するにはコマンドを使用する必要がありますか?私はどんな形の使い方も試してみましたがeval…役に立ちませんでした。

私が何か簡単か曖昧なものを見逃しているのか、それとも時間を無駄にする前にこれが可能かを知る必要があります。

私は実質を1つに集めることができる。本物必要に応じて機能させる方法は次のとおりです。しかし、可能であればこれを避け、正しい方法を学びたいです。

ベストアンサー1

残念ながら、変数拡張は中括弧拡張の後に発生するため、その拡張(AFAIK)では変数を使用できません。

幸いなことに、同じことをするツールがあります。

for i in $(seq 1 $numlines); do
    # stuff
done

seqGNU coreutilsはPOSIXでこれを行う方法を知りません。

おすすめ記事