私のBashスクリプトがこのプロジェクトオイラーに正しい答えを返さないのはなぜですか?

エグロド

私が完了するのバッシュを使用しようとしているプロジェクトオイラー13以下は、何が問題なのか理解できない私のコードです。

#!/bin/bash                                                
sum=0                                                      
while read -r -d $'\r' line; do                            
    sum=$(echo $sum + $line | bc)                          
done <<< "$(curl -s http://pastebin.com/raw/uHZ0PZjm)"     
echo "${sum:0:10}"                                         
exit 

                             

以前は2つのエラーが発生していました。

(standard_in) 1: syntax error

そして

(standard_in) 1: illegal character: ^M

いくつかの調査の結果、EOFターミネータの問題のようでした。次に、その上でdos2unixを実行しましたが、2番目のエラーは発生しなくなりましたが、最初のエラーが繰り返し発生しています。データをbcにパイプする方法に問題があるようですが、何をどのように修正するのかわかりません。

正解は5537376230です。何かお手伝いできることをありがとうございます。

システム情報は

GNU bash、バージョン4.3.11(1)-リリース(x86_64-pc-linux-gnu)

私はWindows10でcmderを使用しています。

Spiff

(== 0x0d == CR ==キャリッジリターン)readではなく、\ n(== 0x0a == LF ==ラインフィード)を区切り文字として設定します\rそれか、ペーストビンファイルの最後にCRを付けてください。Pastebinファイルの最後の行の終わりに行末記号シーケンスがないようです。そのため、最後の行がスクリプトに入力されることはありません。

$ curl -s http://pastebin.com/raw/uHZ0PZjm | hexdump -C | tail -n 8
...(snip)...
000013e0  35 30 39 35 31 36 0d 0a  32 30 38 34 39 36 30 33  |509516..20849603|
000013f0  39 38 30 31 33 34 30 30  31 37 32 33 39 33 30 36  |9801340017239306|
00001400  37 31 36 36 36 38 32 33  35 35 35 32 34 35 32 35  |7166682355524525|
00001410  32 38 30 34 36 30 39 37  32 32 0d 0a 35 33 35 30  |2804609722..5350|
00001420  33 35 33 34 32 32 36 34  37 32 35 32 34 32 35 30  |3534226472524250|
00001430  38 37 34 30 35 34 30 37  35 35 39 31 37 38 39 37  |8740540755917897|
00001440  38 31 32 36 34 33 33 30  33 33 31 36 39 30        |81264330331690|
0000144e

各番号の間に0x0d0a(CR LF)がありますが、最後の番号の後にはないことに注意してください。

$ while read -r -d $'\r' line; do echo $line; done <<< "$(curl -s http://pastebin.com/raw/uHZ0PZjm)" | tail -n 3
77158542502016545090413245809786882778948721859617
72107838435069186155435662884062257473692284509516
20849603980134001723930671666823555245252804609722

readコマンドを実行すると、最後の番号535 [...] 690が欠落していることに注意してくださいただし、区切り文字をUnixネイティブのLF(\ n)改行文字に切り替えると、最後の行が含まれます。

$ while read -r -d $'\n' line; do echo $line; done <<< "$(curl -s http://pastebin.com/raw/uHZ0PZjm)" | tail -n 3
72107838435069186155435662884062257473692284509516
20849603980134001723930671666823555245252804609722
53503534226472524250874054075591789781264330331690

編集して追加:ペーストビンファイルのCRを処理する修正は次のとおりです。read区切り文字としてCRLFを使用するように指示し、ペーストビンファイルの後にCRLFを追加するために追加のエコーを使用しました。

sum=0
while read -r -d $'\r\n' line; do
    sum=$(echo $sum + $line | bc)
done <<< $(curl -s http://pastebin.com/raw/uHZ0PZjm; echo -e "\r\n")
echo "${sum:0:10}"

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プロジェクトオイラー#32:なぜ私の答えは間違っているのですか?

分類Dev

このクラスのオブジェクトが異なるプロセスで正しくシリアル化されないのはなぜですか?

分類Dev

プロジェクトオイラー#29:なぜ私の答えは37までにずれているのですか?

分類Dev

プロジェクトオイラー#43:なぜ私の答えはそんなに時間がかかるのですか?

分類Dev

プロジェクトオイラー#43:なぜ私の答えはそんなに時間がかかるのですか?

分類Dev

同期:クラスのクラスオブジェクトではなく、プライベートの最終静的オブジェクトをロックすることが望ましいのはなぜですか?

分類Dev

同期:クラスのクラスオブジェクトではなく、プライベートの最終静的オブジェクトをロックすることが望ましいのはなぜですか?

分類Dev

リストに正しい数のオブジェクトが表示されないのはなぜですか?

分類Dev

シーザー暗号:テストとして使用される印刷された値の間に正しい値があるのに、なぜ私のプログラムが間違った答えを返すのですか?

分類Dev

このbashスクリプトがUbuntuで実行されないのに、オンライン環境では実行されるのはなぜですか?

分類Dev

ApiaryコンソールがこのAPIブループリントに対して正しい応答を返さないのはなぜですか?

分類Dev

計算されたオブジェクト内のオブジェクトプロパティを取得すると、オブジェクト自体ではなく未定義になるのはなぜですか?このコンテキストでは、どちらのアプローチが適していますか?

分類Dev

私のintellijideamavenプロジェクトにsrcディレクトリがないのはなぜですか?

分類Dev

私の bash スクリプトが正しく cd できないのはなぜですか?

分類Dev

for..in()ループが配列内のオブジェクトを返さないのはなぜですか?

分類Dev

私のプログラムがProjectEuler 17の正しい答えを出力しないのはなぜですか?

分類Dev

Android Studio 3.2.1の新しいプロジェクトテンプレートがAndroidXライブラリを使用しないのはなぜですか?

分類Dev

スクリプトが球オブジェクトを回転させないのはなぜですか?

分類Dev

このCSSがデモで機能しているのに、私のプロジェクトでは機能していないのはなぜですか?

分類Dev

FormDataオブジェクトの追加を含むPUTリクエストがLaravelコントローラーに送信されないのはなぜですか?

分類Dev

私のプロパティがレルムオブジェクトにないのはなぜですか?

分類Dev

NetBeansが常に私のMavenプロジェクトで「プライミングビルド」を実行したいのはなぜですか?

分類Dev

MVCプロジェクトでajaxエラーがトリガーされないのはなぜですか?

分類Dev

JavaScriptでオブジェクトがプログラムでselect要素に正しく追加されないのはなぜですか?

分類Dev

このbashスクリプトが終了しないのはなぜですか?

分類Dev

このAWS Lambdaデプロイメントパッケージにハンドラスクリプトが見つからないのはなぜですか?

分類Dev

プロジェクトオイラー#8、正しい答えが得られないようです

分類Dev

typescriptがオブジェクトタイプの2つの配列に対してエラーをスローするのに、両方の形状ではエラーをスローしないのはなぜですか?

分類Dev

コンストラクター関数がオブジェクトを返すのに、JavaScriptのプリミティブを返さないのはなぜですか?

Related 関連記事

  1. 1

    プロジェクトオイラー#32:なぜ私の答えは間違っているのですか?

  2. 2

    このクラスのオブジェクトが異なるプロセスで正しくシリアル化されないのはなぜですか?

  3. 3

    プロジェクトオイラー#29:なぜ私の答えは37までにずれているのですか?

  4. 4

    プロジェクトオイラー#43:なぜ私の答えはそんなに時間がかかるのですか?

  5. 5

    プロジェクトオイラー#43:なぜ私の答えはそんなに時間がかかるのですか?

  6. 6

    同期:クラスのクラスオブジェクトではなく、プライベートの最終静的オブジェクトをロックすることが望ましいのはなぜですか?

  7. 7

    同期:クラスのクラスオブジェクトではなく、プライベートの最終静的オブジェクトをロックすることが望ましいのはなぜですか?

  8. 8

    リストに正しい数のオブジェクトが表示されないのはなぜですか?

  9. 9

    シーザー暗号:テストとして使用される印刷された値の間に正しい値があるのに、なぜ私のプログラムが間違った答えを返すのですか?

  10. 10

    このbashスクリプトがUbuntuで実行されないのに、オンライン環境では実行されるのはなぜですか?

  11. 11

    ApiaryコンソールがこのAPIブループリントに対して正しい応答を返さないのはなぜですか?

  12. 12

    計算されたオブジェクト内のオブジェクトプロパティを取得すると、オブジェクト自体ではなく未定義になるのはなぜですか?このコンテキストでは、どちらのアプローチが適していますか?

  13. 13

    私のintellijideamavenプロジェクトにsrcディレクトリがないのはなぜですか?

  14. 14

    私の bash スクリプトが正しく cd できないのはなぜですか?

  15. 15

    for..in()ループが配列内のオブジェクトを返さないのはなぜですか?

  16. 16

    私のプログラムがProjectEuler 17の正しい答えを出力しないのはなぜですか?

  17. 17

    Android Studio 3.2.1の新しいプロジェクトテンプレートがAndroidXライブラリを使用しないのはなぜですか?

  18. 18

    スクリプトが球オブジェクトを回転させないのはなぜですか?

  19. 19

    このCSSがデモで機能しているのに、私のプロジェクトでは機能していないのはなぜですか?

  20. 20

    FormDataオブジェクトの追加を含むPUTリクエストがLaravelコントローラーに送信されないのはなぜですか?

  21. 21

    私のプロパティがレルムオブジェクトにないのはなぜですか?

  22. 22

    NetBeansが常に私のMavenプロジェクトで「プライミングビルド」を実行したいのはなぜですか?

  23. 23

    MVCプロジェクトでajaxエラーがトリガーされないのはなぜですか?

  24. 24

    JavaScriptでオブジェクトがプログラムでselect要素に正しく追加されないのはなぜですか?

  25. 25

    このbashスクリプトが終了しないのはなぜですか?

  26. 26

    このAWS Lambdaデプロイメントパッケージにハンドラスクリプトが見つからないのはなぜですか?

  27. 27

    プロジェクトオイラー#8、正しい答えが得られないようです

  28. 28

    typescriptがオブジェクトタイプの2つの配列に対してエラーをスローするのに、両方の形状ではエラーをスローしないのはなぜですか?

  29. 29

    コンストラクター関数がオブジェクトを返すのに、JavaScriptのプリミティブを返さないのはなぜですか?

ホットタグ

アーカイブ