FOSS」をフォローしているなら、毎週のBashチャレンジに気づいているかもしれません。ItとFOSSの共同作業です。ChallengeをFacebookから、通常のWeb上のより幅広いユーザーにもたらしています。これは、このシリーズの5回目の記事です。最初の4つの課題は、Facebookのページにあります。本の形でこれらの課題を購入することもできます。バッシュチャレンジ5私たちはあなたに端末のスクリーンショットを見せて、そして結果が我々が期待していたものではない理由を説明するようにあなたに頼みます。面白い、そして最も創造的な、チャレンジの一部は、正しい結果を得るために画面に表示されたコマンドを修正する方法を見つけることです。それで、今週の挑戦はここにあります:マイバッシュはどうやって数えるのかわからない[難易度1]今週は、各行に1つずつ、整数を含むデータファイルがあります。153そして、これらすべての数値の合計を計算したいと思います。$SUM"残念ながら、私が得た結果は間違っています(予想される結果は536でした)。522チャレンジあなたの挑戦は、見つけることです:なぜその結果が間違っていたのでしょうか。★Bashの内部コマンドやシェルの代用のみを使用して解決策を見つけることができれば、おまけのユニコーンポイント。創造的であることを忘れないでください。4.8.7-1(amd64)すべてのコマンドは、標準のDebianディストリビューションに同梱されているものです。再現方法これが、この課題を解決するために使用した生のコードです。これを端末で実行すると、チャレンジの図に表示されているのとまったく同じ結果を再現できます(私と同じソフトウェアバージョンを使用していると仮定します)。?問題は071値によって引き起こされました。お気づきのとおり、この番号は0から始まります。ここですべてのデータが3桁でフォーマットされていることを確認するためです。進数ではなく8進数で表されることを指定する方法です。8進数は0から7までの数字で表されます。これが簡単な変換表です。57この最後の値は、合計を評価するときにエラーを引き起こしたものです。10進数値を表す8進数として解釈しました。57それを修正するには?この問題を解決するための2つの主な戦略があります。先行ゼロを除去します。シェルに私のすべての数字を理解させる方法を見つけることは10進数値です。externalコマンドを使用して先行ゼロを削除する簡単な解決策です。Bashは私たちが物事をより良くすることを可能にします。データを修正するのではなく、数値を8進数(8進数)ではなく10進数(10進数)で表すように明示的に指定します。base#value構文を使用してそれを行うことができます。これら3つの例を比較してください。71最初のコマンドを修正して正しい結果を得るためには、すべてのデータに基数10を明示的に指定するだけです。$SUM"そして、これが正しい結果です。あなたがその挑戦を楽しんだことを願っています。Leroux、情熱によるソフトウェアエンジニア、職業による教師です。私はコンピュータサイエンス&情報技術をあらゆるレベルで教えることに15年の経験があります。私はLinuxとOpenSourceの技術を強く支持しています。ITを設立し、オンラインコースと無料ビデオを通じて、その経験をより多くのユーザーと共有しています。Twitterで私に連絡することを躊躇しないでください。Terminal:Linux用の次世代ターミナル2019Liferea:RSSクライアントなど2019Linuxコマンドライン用の最高のテキストエディタ2019XenlismテーマでLinuxデスクトップを見事な変身させましょう私たちについてUnixでは、ヒント、ソリューション、問題、レビューのすべて。