Bash 货币转换器

Bash 货币转换器,bash,Bash,我被困在这个美元兑瑞典克朗的货币转换器和空行,第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 th

我被困在这个美元兑瑞典克朗的货币转换器和空行,第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

您可以使用
bc
执行浮点运算,如下所示:

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

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

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

完整示例

输出

注意,我从脚本中删除了
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

我尝试了这个SEK=“(1*(USD))*6”的可能重复,但是如果我想在6之后使用小数,我不知道如何声明它?你的例子也是一样,我得到一个语法错误。6.32138好的,谢谢,所以我应该在printf中更改为%f:%f(或%f)-显示不带指数符号的浮点数是的,您还应该删除
declare-i
这是我在运行脚本时得到的结果:USD-SEK货币转换器输入USD:10./test2.sh:row 6:printf:63.21380:无效数字您将获得SEK 0000000是在更改为%f之前得到的吗?
#!/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