数字を完全な書面テキストに変換

数字を完全な書面テキストに変換

数値を完全なテキストに変換するスクリプトをLinuxで作成する必要があります。時間が触れて例外もなく、カンマの後の数字もないコードを解くべきだったけどそれでもダメですね。プログラムは変数を認識しないので、主に構文に関連する助けが必要です。これが私が今持っているものです(オランダ語で)。

更新:(私の考えでは)最も重要な部分を英語に翻訳しました。

#!/bin/bash
echo -prijs "Give the price: "
read price

thousands='expr $price /1000'
hundreds='expr ($price - $thousands) / 100'
teens='expr ($price - $hundreds - $thousands / 10'
units='expr $price - $hundreds - $thousands - $teens'

    for ((i=0 ; i<=$thousands; i++ ))
do
    case $thousands in
        0) echo -prijs "";;
        1) echo -prijs "duizend";;
        2) echo -prijs "tweeduizend";;
        3) echo -prijs "drieduizend";;
        4) echo -prijs "vierduizend";;
        5) echo -prijs "vijfduizend";;
        6) echo -prijs "zesduizend";;
        7) echo -prijs "zevenduizend";;
        8) echo -prijs "achtduizend";;
        9) echo -prijs "negenduizend";;
        10) echo -prijs "tienduizend";;
    esac
done
    for ((i=0 ; i<=$hundreds; i++ ))
do
    case $hundreds in
        0) echo -prijs "";;
        1) echo -prijs "honderd";;
        2) echo -prijs "tweehonderd";;
        3) echo -prijs "driehonderd";;
        4) echo -prijs "vierhonderd";;
        5) echo -prijs "vijfhonderd";;
        6) echo -prijs "zeshonderd";;
        7) echo -prijs "zevenhonderd";;
        8) echo -prijs "achthonderd";;
        9) echo -prijs "negenhonderd";;
    esac
done
    for ((i=0 ; i<=$teens; i++ ))
do
    case $teens in
        0) echo -prijs "";;
        1) echo -prijs "tien";;
        2) echo -prijs "twintig";;
        3) echo -prijs "dertig";;
        4) echo -prijs "veertig";;
        5) echo -prijs "vijftig";;
        6) echo -prijs "zestig";;
        7) echo -prijs "zeventig";;
        8) echo -prijs "tachtig";;
        9) echo -prijs "negentig";;
    esac
done
    for ((i=0 ; i<=$units; i++ ))
do
    case $units in
        0) echo -prijs "";;
        1) echo -prijs "een";;
        2) echo -prijs "twee";;
        3) echo -prijs "drie";;
        4) echo -prijs "vier";;
        5) echo -prijs "vijf";;
        6) echo -prijs "zes";;
        7) echo -prijs "zeven";;
        8) echo -prijs "acht";;
        9) echo -prijs "negen";;
    esac
done

echo "The price is: " 'expr $thousands + $hundreds + $teens + $units'

ベストアンサー1

コードにはいくつかの問題があります。最初の問題は、バックティックを使用する必要がある場所に一重引用符を使用していることです。 2番目の問題は、exprbashでは実際には必要ありませんが、$(())これを行うことです。 3番目の問題は、公式が単に間違っているということです。 4番目の問題は-prijsコメントで指摘されています。コードのこの部分を書き直してください。

thousands='expr $price /1000'
hundreds='expr ($price - $thousands) / 100'
teens='expr ($price - $hundreds - $thousands / 10'
units='expr $price - $hundreds - $thousands - $teens'

到着

thousands=$((price/1000))
hundreds=$((price%1000/100))
teens=$((price%100/10))
units=$((price%10))

%Bashのモジュロ演算子はどこにありますか?-prijs残りの部分(スクリプトの内容や最後の行など)を直接修正してみてください。

おすすめ記事