Shell 如何编写可以在bash和csh中运行的脚本?

Shell 如何编写可以在bash和csh中运行的脚本?,shell,scripting,Shell,Scripting,我不确定这是否可能,但有没有一种方法可以编写既可以由Bourne shell解释又可以由C shell解释的shell脚本?我希望避免简单地检查shell并运行特定于shell的代码。如果可能的话,有没有关于如何做的指南 我总是为Bourne shell语法编写脚本,而我对csh几乎一无所知,所以这可能是一个愚蠢的问题。我已经在谷歌上找到了shell之间的区别,但是关于它对脚本编写的影响,几乎没有什么信息(据我所知)。如果您的脚本很简单,建议使用: #!/bin/sh 此shell(几乎?)始

我不确定这是否可能,但有没有一种方法可以编写既可以由Bourne shell解释又可以由C shell解释的shell脚本?我希望避免简单地检查shell并运行特定于shell的代码。如果可能的话,有没有关于如何做的指南


我总是为Bourne shell语法编写脚本,而我对csh几乎一无所知,所以这可能是一个愚蠢的问题。我已经在谷歌上找到了shell之间的区别,但是关于它对脚本编写的影响,几乎没有什么信息(据我所知)。

如果您的脚本很简单,建议使用:

#!/bin/sh

此shell(几乎?)始终可用。

您可以尝试阅读。否则,请学习使用Python或Perl之类的语言。它的基本编程语法,如流控制、数据结构、循环,几乎都是新旧版本的标准

可以用多种语言编写一个有效的文本程序(事实上,其中一个错误页面上有一个),但这些东西几乎从来没有用过——它们只是好奇,只是为了炫耀自己的聪明

Unix提供了一种非常有用的方法来保证脚本的语言,而不管使用什么shell(或其他程序)来调用脚本。这就是所谓的“急剧爆炸”语法。因此,您选择您最喜欢的shell(我非常喜欢Bourne shell而不是C shell,并且
file/usr/bin/*| grep shell
同意我的观点),然后编写

#!/bin/sh

export PATH=/usr/local/bin:$PATH
print "I am running as Bourne shell no matter what your login shell is!"
有时写一些更复杂的东西是有用的;我有几个以

#/usr/bin/env lua5.1

您还可以使用perl、python、ruby等实现这一点,这就像询问一个脚本是否可以在perl和python中运行一样。Bash和Csh是不同的语言。