我正在尝试创建一个脚本来做简单的事情。我需要提示用户回复问题,输入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中运行。请问你能帮帮我吗?非常感谢你的帮助。
答案 0 :(得分:2)
除了csh和bash之外,很难想到两个不同的shell。它们是不同的语言,你不能指望csh代码在bash中工作,反之亦然。
在bash中,你使用shell内置read
从STDIN读取,在csh中你使用了构造$<
。不同的语言。
我真的需要让两个shell都使用相同的脚本为什么?当您在脚本开头放置#!/bin/csh
时,它将运行c-shell,使用#!/bin/bash
然后它将运行bash。常见的错误是在#!
之前有空格或其他字符,它们必须绝对是文件中的前两个字节。