使用bash和tcsh区分脚本行为

时间:2016-11-01 14:18:00

标签: bash shell tcsh

我对Linux上的shell脚本(目前使用的是Ubuntu)很陌生。 我编写了简单的以下脚本(名称yourName.sh):

#!/usr/bin/tcsh -f
echo "What is your first name?"
set firstName = $<
echo "What is your last name?"
set lastName = $<
echo "Hello $firstName $lastName"

现在,当我用

运行脚本时
bash yourName.sh

我收到以下错误:

What is your first name?
yourName.sh: line 3: syntax error near unexpected token 'newline'
yourName.sh: line 3: 'set firstName = $<'

当我使用tcsh yourName.sh运行相同的脚本时,一切正常。 显然,详细的答案很受欢迎,但如果有人甚至可以引用我一篇解释'bash'和'tcsh'之间差异的文章,那将是一个巨大的帮助。

3 个答案:

答案 0 :(得分:1)

我个人总是使用这篇文章来发现不同shell类型之间的语法差异:

链接:http://hyperpolyglot.org/unix-shells

强烈建议你使用bash over tsch,特别是如果你是Linux的新手。它的用途更广泛,简而言之,更多人使用它,这意味着如果你遇到问题,那么触手可及的文档远远多于tsch。

答案 1 :(得分:0)

tcshbash有不同的祖先 - bash是原始Bourne shell, sh的后代,而tcshC shell, csh的后代}。它们在很大程度上是不相容的。

答案 2 :(得分:0)

这是你脚本的bash版本;要从键盘获取输入,请使用read命令。

echo "What is your first name?"
read -r firstName
echo "What is your last name?"
read -r lastName
echo "Hello $firstName $lastName"
  

read -r raw input - 禁用读取数据中反斜杠转义和行继续的解释