0

我被困在这个美元到瑞典克朗的货币转换器和第 12 行的空行上。当前的转换是 1 瑞典克朗 = 0.158193 美元 1 美元 = 6.32138 瑞典克朗。

第 12 行将有类似 SEK="(?(USD) )?" 的内容

我不知道在问号中输入什么。

#!/bin/bash

shopt -s -o nounset
declare -i USD # USD
declare -i SEK # SEK
# Title
printf "%s\n" "USD-SEK Currency Convertor"
printf "\n"
# Get the value to convert
read -p "Enter a USD: " USD
# Do the conversion

printf "You will get SEK %d\n" "$SEK"
exit 0
4

1 回答 1

1

您可以使用以下方法进行浮点运算bc

SEK=$( echo " 6.32138 * $USD " | bc -l )

解释:

Bash 没有构建对浮点运算的支持。因此,我们通常使用程序来处理这些操作bcbc从标准输入读取算术表达式作为字符串,并将结果打印到标准输出。请注意,该-l选项对于保留表达式的小数部分是必需的。

为了从 中获取结果bc并将其存储在变量中,我们使用命令重定向,即$( ). =请注意,上一个表达式中的前后没有空格。

完整示例

#!/bin/bash
printf "%s\n" "USD-SEK Currency Convertor"
# Get the value to convert
read -p "Enter a USD: " USD
SEK=$(echo " 6.32138 * $USD " | bc -l )
printf "You will get SEK %s\n" "$SEK"  ;#  NOTE THAT I CHANGED THIS TO %s FROM %f DUE TO THE LOCALE SETTINGS

输出

$ ./converter.sh 
USD-SEK Currency Convertor
Enter a USD: 10
You will get SEK 63.213800

请注意,我declare -i SEK从脚本中删除了,因为SEK变量不是整数

的危害declare -i。此代码产生:

#!/bin/bash
declare -i SEK     ;#    WOOOPS I FORGOT THE declare -i
printf "%s\n" "USD-SEK Currency Convertor"
# Get the value to convert
read -p "Enter a USD: " USD
SEK=$(echo " 6.32138 * $USD " | bc -l )
printf "You will get SEK %s\n" "$SEK"

这个输出:

$ ./converter.sh 
USD-SEK Currency Convertor
Enter a USD: 10
./converter.sh: line 6: 63.21380: syntax error: invalid arithmetic operator (error token is ".21380")
You will get SEK 0.000000

于 2013-02-14T16:15:54.937 回答