ファイルの行数を繰り返す方法

ファイルの行数を繰り返す方法

テキストファイルの行を繰り返したいと思いますa.txt。ファイルに6行がある場合は、次のようにできます。

for c in {1..6} ; do echo $c; done

印刷:

1
2
3
4
5
6

行数は次のように計算できます。

wc -l a.txt | cut -f1 -d' '

これは作る2852

wcここで、以下のように数をforループに置き換えようとすると、ループは機能しません。

for c in {1..$(wc -l ~/a.txt| cut -f1 -d' ')} ; do echo $c; done

1から2852までの数字を印刷する代わりに、次のものを印刷します。

{1..2852}

正しい数値順序を得るために、上記のループでサブシェルの使用法をどのように変更する必要がありますか?

bash --versionはい(Debian):

GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.

)

ベストアンサー1

バッシュはそうではなかった変数を括弧内に入れる関数です。

var=$(wc -l ~/a.txt| cut -f1 -d' ')}
echo {0..$var}

ループを使用できます。

for ((i=0; i<var; i++)); do
    echo "$i"
done

動作していても、以下は避けるべきです。

eval echo {0..$var}

eval「悪」の一般的なスペルミスです。
バラよりhttp://mywiki.wooledge.org/BashFAQ/048

おすすめ記事