gpt4 book ai didi

linux - csh中的switch语句

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:14 31 4
gpt4 key购买 nike

我正在尝试使 switch 语句在 tcsh 中工作,但我不确定它为什么不起作用。我在屏幕上显示一个菜单,如果选择了该选项,它会显示价格,然后返回顶部并重复直到选择退出选项。

#!/bin/csh

clear
echo -n "Petes A Pizza "
echo -n " Menu "
echo -n " "
echo -n " Make a selection "
echo -n " "
echo -n " A. Speciality Pizza "
echo -n " B. Veggi Lovers Pizza "
echo -n " C. Meat Lovers Pizza "
echo -n " D. Hawaiian Pizza "
echo -n " E. Cheese Pizza "
echo -n " F. Exit "

set a = $<

switch ($a)

case [A] :
set A = ((7.99 + 0.07))
echo $A
sleep 5
goto top
case [B] : #they choose option 2
set B = ((8.99 * 0.07) + 8.99)
echo $B
sleep 5
goto top
case [C] : #they choose option 3
set C = ((6.99 * 0.07) + 6.99)
echo $C
sleep 5
goto top
case [D] : #they choose option 4
set D = ((8.49 * 0.07) + 8.49)
echo $D
sleep 5
goto top
case [E] : #they choose option 5
set E = ((3.99 * 0.07) + 3.99)
echo $E
sleep 5
case [F] :
exit 0
breaksw

endsw
end

最佳答案

这里有一些建议应该足以帮助您让它发挥作用。

#!/bin/csh 更改为 #!bin/csh -f。这告诉 shell 读取您的 ~/.cshrc 文件,这样可以节省时间并避免混淆。 (如果您不小心编写了依赖于您在 .cshrc 中定义的别名的代码,例如,您的脚本将无法为其他任何人工作。)

如果您必须清除屏幕,clear 命令是执行此操作的方法——但为什么呢?如果我想在运行您的脚本之前清除屏幕,我会自己做,非常感谢。如果我不想丢失屏幕上的信息,当您的脚本决定帮我删除它时,我会很生气。

将所有 echo -n 更改为仅 echo-n 选项告诉 echo 不带尾随换行符打印它的输出;您的整个菜单将打印在一行上。

案例标签中的方括号是不必要的。 case A :case [A] : 含义相同。请注意,您要求用户提供大写输入,这可能会带来不便。

set A = ((7.99 + 0.07))
...
set B = ((8.99 * 0.07) + 8.99)

这些是不一致的。您似乎在尝试计算基本价格加上 7% 的销售税。对于情况 B,一个更简单的表达式是 8.99 * 1.07

csh 无法识别此 (( ... )) 语法;我想知道你从哪里得到它的想法。 csh 可以使用 @ 命令进行算术运算:

@ x = 2 + 2
@ x ++

但它只对整数进行运算。 bc 命令可以进行浮点计算。你可以这样写:

set B = `echo 'scale=5; 1.07 * 8.99' | bc`

或者,更简单地说:

set B = `echo '1.07 * 8.99' | bc -l

但是 bc -l 可能会给你比你想要的更多的数字。 man bc 了解有关 bc 命令、其语法及其工作原理的更多信息。请记住,csh 变量的值是字符串,而不是数字。

(我不确定 bc 是完成这项工作的最佳工具。)

最后,csh 并不是编写脚本的最佳语言。我使用它的时间比我愿意承认的要长,有时我不得不通过反复试验来找出给定语法的行为方式;在许多情况下,语法定义不明确,手册页并不总能把事情搞清楚。

推荐阅读:"Csh Programming Considered Harmful" , 汤姆·克里斯蒂安森 (Tom Christiansen)。

关于linux - csh中的switch语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466002/

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