pv: -s: 整数引数が必要です。

pv: -s: 整数引数が必要です。

次のコマンドを実行するスクリプトがあります。

pv -s `du -sb file1.data | awk '{s += $1} END {print s}'`

次のエラーが発生します。

pv: -s: integer argument expected

したがって、このコマンドを実行すると、du -sb file1.data | awk '{s += $1} END {print s}'出力は次のようになります。

1.03131e+10

それでは、この問題をどのように解決するのですか?

答え1

printfを使ってフォーマットします。

du -sb file1.data | awk '{s += $1} END {printf "%d\n", s}'

%ldまたは、非常に大きな数字が必要な場合があります。

du -sb file1.data | awk '{s += $1} END {printf "%ld\n", s}'

これが失敗した場合(FreeBSDで1e32などの数字でテストしたように)、次のことを試してください。

du -sb file1.data | python -c $'import sys\nt=0\nfor line in sys.stdin:\n    t += int(line.split()[0])\nprint(t)'

関連情報