gpt4 book ai didi

bash - 摄氏度到开尔文温度转换 bash 脚本

转载 作者:行者123 更新时间:2023-12-02 17:58:30 25 4
gpt4 key购买 nike

if [[ ${1: -1}=='C' ]]
then
celsius=$(echo $1 | sed 's/C//g')
echo "`expr $celsius + 273`K"
else
kelvin=$(echo $1 | sed 's/K//g')
echo "`expr $kelvin - 273`C"
fi

请解释一下出了什么问题

./script 55C

328K

./script 122K

expr:不是十进制数:'122K'

K

最佳答案

这样可以避免if森林(“if”在法语中是指一种树):

#!/bin/bash

case $1 in
*[cC])
echo "$((${1%[a-zA-Z]} + 273))K"
;;
*[kK])
echo "$((${1%[a-zA-Z]} - 273))C"
;;
*)
echo "error arg [$1]" >&2
exit 1
;;
esac

expr 是古代 shell 代码中用来做数学运算的程序。
在 bash 等 Posix shell 中,使用 $(( expression ))
在 bash、ksh88+、mksh/pdksh 或 zsh 中,您还可以使用 (( expression ))

支持浮点精度的版本,使用 bcreal float 273.16 :

#!/bin/bash

case $1 in
*[cC])
echo "$(bc <<< "scale=2; ${1%[a-zA-Z]} + 273.16")K"
;;
*[kK])
echo "$(bc <<< "scale=2; ${1%[a-zA-Z]} - 273.16")C"
;;
*)
echo "error arg [$1]" >&2
exit 1
;;
esac

关于bash - 摄氏度到开尔文温度转换 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75035390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com