tsch: case 语句没有评估

tsch: case statement isn't evaluating

编辑:我最初认为我的变量不接受来自键盘的输入。我已更正我的问题以更准确地反映问题。

在下面的脚本中,case 语句没有计算。

我是 tcsh 的新手...我只想 input_line 接受字符 a-d 作为键盘输入,我不确定是,并且 运行 switch 语句正确。

我正在阅读 Sobell 的 "A Practical Guide to Linux Commands, Editors, and Shell Programming." 我的语法 似乎 根据书中关于 tcsh 的第 9 章是正确的,但是,在这一点上,我不知道我的意思做错了

通过 SO 搜索没有产生类似的问题,所以这对很多人来说是显而易见的痛苦,或者还没有人问过。

能不能有经验的人看看,指出我的错误?

#!/bin/tcsh 
# menu interface to simple commands 
set input_line = ''
echo "\n        COMMAND MENU\n"
echo " a. Current date and time"
echo " b. Users currently logged in"
echo " c. Name of the working directory"
echo " d. Contents of the working directory\n"
echo -n "Enter a, b, c, or d: "
set input_line = "$<"
# 
switch ($input_line)
    case of [aA*]:
            date
            breaksw
    case of [bB*]:
            who
            breaksw
    case of [cC*]:
            pwd
            breaksw
    case of [dD*]:
            ls
            breaksw
    default:
            echo "There is no selection: $input_line"
            breaksw
ends

需要说明的是,我可以获得一个脚本,该脚本在 bash 中执行完全相同的操作以正常工作,但我专注于 tcsh。

这一行:

set input_line = "$<"

工作正常。问题是 case 标签的语法错误。将 case of 更改为 case,它应该可以工作。

(我很好奇你为什么认为 of 是必要的。()