Bashを使用してファイルを読み取る際にエラーが発生しました。

Bashを使用してファイルを読み取る際にエラーが発生しました。

次のコードを使用してbashスクリプトからファイルを読みたいです。

#!/bin/bash

file=$(sort "$1" | cut -f 1 -d "," | uniq -c | sed 's/^ *//g')

while IFS= read -r line
do
    echo "$line"
done < "$file"

ただし、ファイルの最後には常に次のエラーが発生します。

File name too long

なぜこれが起こるのですか?最初は次のような出力が表示されますが、望ましくありません。

script.sh: line 8:

ベストアンサー1

処理後、変数にfileファイル名が含まれていないようです。コマンドの出力を処理するには、プロセス置換を使用できます<(...)

#!/bin/bash

while IFS= read -r line; do
  printf '%s\n' "$line"
done < <(sort "$1" | cut -f1 -d, | uniq -c | sed 's/^ *//')

g行の先頭から始めて、1行に1回だけ一致するスペースの数に関係なく、スクリプトのスペースを削除しました。sed^

おすすめ記事