我坚持这个美元到SEK货币转换器和空行,第12行。目前的转换是1 SEK = 0.158193 USD 1 USD = 6.32138 SEK。
第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
答案 0 :(得分:1)
您可以使用bc
进行浮点运算,如下所示:
SEK=$( echo " 6.32138 * $USD " | bc -l )
<强> 说明: 强>
Bash没有为浮点算法构建它。因此,我们通常使用bc
程序处理这些操作。 bc
从标准输入中读取算术表达式作为字符串,并将结果打印为标准输出。请注意,-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
变量是 NOT 整数
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