用于用户密码授权的csh脚本

时间:2010-09-12 06:48:02

标签: linux csh

我正在尝试编写一个专业程序,通过基于菜单的系统接受和处理输入。该程序应该没有命令行参数。它将在名为TaskMenu的csh脚本中编写。这个shell脚本将:

  1. 向用户索要密码 一个。如果密码不正确,系统将退出 带有适当的错误消息。
  2. 显示文本菜单,然后从用户处获得响应。
  3. 处理用户输入并重新显示文本菜单 直到用户想要退出。

2 个答案:

答案 0 :(得分:4)

要读取密码,请关闭echo,读取密码,然后重新启用echo。 CSH:

stty -echo 
echo -n "Enter password: "
set password = $<
stty echo

要创建菜单,只需将选项回显到屏幕即可 读取一个值。 CSH:

echo 1 first item
echo 2 second item
echo 3 third ...
echo -n "Enter Choice: "
set choice = $<

bash中的这两个相同的任务是:

阅读密码:

echo -n "Enter password: "
read -s password

制作菜单:

select choice in "first item" "second item" "third..." do
test -n "$choice" && break; 
done

请注意如何阅读密码和制作菜单以进行bash。除了更容易之外,脚本中的一些常见事情在csh中是不可能的。 Csh不是作为脚本语言设计的。使用Bash,Python,Ruby,Perl甚至是低级的 / bin / sh 更容易编写几行代码。

那就是说,这是一个完整的csh脚本,显示了密码和菜单方法:

#! /bin/csh

set PW="ok"

### Read Password
echo -n "enter passwd: "
stty -echo
set passwd = $<
stty echo

if ( "$passwd" == "$PW" ) then
        echo Allrighty then!
else
    echo "Try again. Use '${PW}'."
    exit 1
endif


### Menu
@ i = 1
set items = (one two three four five six seven)
foreach item ( $items[*] ) 
    echo "${i}) $item"
    @ i = $i + 1
end
set choice = 0
while ( $choice < 1 || $choice > $#items )
    echo -n "Select: "
    set choice = $<
end
echo "You chose ${choice}: $items[$choice]"

备注

  

虽然很受互动使用的欢迎   因为它有很多创新   功能,csh从未如此   流行的脚本[1]

1 Wikipedia

答案 1 :(得分:1)

问:为什么有人想在bash世界中使用csh;)csh是Soooo 1985;)