在bash和csh中读取用户输入

时间:2013-01-06 18:13:48

标签: bash csh

我正在尝试创建一个脚本来做简单的事情。我需要提示用户回复问题,输入yes或no。该脚本是为csh编写的,但在默认用户shell为bash时不起作用。我的环境是Red Hat Enterprise Linux 5

#!/bin/csh -f
echo -n Type yes to continue
set answer = $<
#...

此代码适用于csh但不适用于bash,它会输出以下错误:

syntax error near unexpected token 'newline'
bash 'set answer =$<'

我真的需要为两个shell都使用相同的脚本(我认为这是将#!/bin/csh放在文件开头的目的!)

我真的不知道如何修改我的脚本以使其在bash中运行。请问你能帮帮我吗?非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

除了csh和bash之外,很难想到两个不同的shell。它们是不同的语言,你不能指望csh代码在bash中工作,反之亦然。

在bash中,你使用shell内置read从STDIN读取,在csh中你使用了构造$<。不同的语言。

我真的需要让两个shell都使用相同的脚本为什么?当您在脚本开头放置#!/bin/csh时,它将运行c-shell,使用#!/bin/bash然后它将运行bash。常见的错误是在#!之前有空格或其他字符,它们必须绝对是文件中的前两个字节。