私のスクリプトには、私が望むように機能しない機能があります。 目的は数値を検証し、10進数にフォーマットすることです。
だから私は、テスト・ファイルのthatsは私の機能のように見える作成...
TMP_NUM="$1"
if [[ "$TMP_NUM" = *[[:digit:]]* ]]; then
if [[ "$TMP_NUM" =~ ^[0-9]+([.][0-9]+)?$ ]] ; then
echo "$TMP_NUM"
else
TMP_DECIMAL=$(awk -v decimal="$TMP_NUM" 'BEGIN {printf("%f", decimal) }')
if [[ "$TMP_DECIMAL" =~ ^[0-9]+([.][0-9]+)?$ ]] ; then
echo "$TMP_DECIMAL"
else
echo "failed !"
fi
fi
else
echo "failed !"
fi
exit 0
結果...私だけを取得するためのテストパラメータを変更しなければならないのはどのよう
[email protected]:~$ test.function4.sh 1e-06
0.000001
[email protected]:~$ test.function4.sh 1e-05
0.000010
[email protected]:~$ test.function4.sh 0Hallo
0.000000
数字が書式設定されていて、eE以外の文字が数字の後ろにある場合のエラーメッセージ?
おそらく関数に別の名前を使用しますか? 'test'はシェル組み込みを妨げる可能性があります。 – codeforester
はい、良い点。名前が変更されました。 – karakfa