不确定这个linux练习是否正确
编写一个脚本,输入用户名和状态(位置)。如果用户居住在 无论是AZ还是CA,他们都要收取25美元的费用。如果用户居住在OH、in或 肯塔基,他们是免费的。否则,他们将被收取10美元的费用。如果他们的名字是 Zappa、Duke或Keneally,他们的费用是原来的两倍。输出他们的名字和费用 答复:不确定这个linux练习是否正确,linux,bash,Linux,Bash,编写一个脚本,输入用户名和状态(位置)。如果用户居住在 无论是AZ还是CA,他们都要收取25美元的费用。如果用户居住在OH、in或 肯塔基,他们是免费的。否则,他们将被收取10美元的费用。如果他们的名字是 Zappa、Duke或Keneally,他们的费用是原来的两倍。输出他们的名字和费用 答复: echo Hello, who am I talking to? read varname echo What state do you live in? read varstate FEE=0 ca
echo Hello, who am I talking to?
read varname
echo What state do you live in?
read varstate
FEE=0
case $varstate in
AZ)
FEE=25
;;
CA)
FEE=25
break
;;
OH)
FEE=0
break
;;
IN)
FEE=0
break
;;
KY)
FEE=0
break
;;
*)
FEE=10
;;
esac
case $varname in
Zappa)
FEE += 25
;;
Duke)
FEE += 25
break
;;
Keneally)
FEE += 25
break
;;
*)
FEE += 10
;;
esac
echo "Name: $varname - Fee: $FEE $"
说明书上说Zappa、Duke和Keneally的费用增加了一倍,但你增加了25美元。只有当他们也在亚利桑那州或加利福尼亚州时,这才是正确的。你给其他人加10,但这根本不正确 使用乘法将费用加倍 您需要使用算术语句
let expression
或((表达式))
在shell中执行计算
此外,您还可以使用|
在同一情况下匹配多个字符串
case $varname in
Zappa|Duke|Keneally)
((FEE *= 2));;
esac
所以,运行它并测试它。提出问题,但不要要求社区审查你的家庭作业。执行应用程序并测试结果是否正确和/或编写一些测试用例