Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不确定这个linux练习是否正确_Linux_Bash - Fatal编程技术网

不确定这个linux练习是否正确

不确定这个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

编写一个脚本,输入用户名和状态(位置)。如果用户居住在 无论是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
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

所以,运行它并测试它。提出问题,但不要要求社区审查你的家庭作业。执行应用程序并测试结果是否正确和/或编写一些测试用例