Bash 货币转换器
我被困在这个美元兑瑞典克朗的货币转换器和空行,第12行。当前换算为1瑞典克朗=0.158193美元1美元=6.32138瑞典克朗 第12行的内容类似于SEK=“(?(USD))?” 我不知道在问号中输入什么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
#!/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