次のコードを使用して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
^