【问题标题】:Difference script behaviour with bash and tcshbash 和 tcsh 的不同脚本行为
【发布时间】:2016-11-01 14:18:00
【问题描述】:

我对 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' 之间差异的文章,那将是一个巨大的帮助。

【问题讨论】:

  • 它们是两个不同的shell,具有不同的语法。我不确定你在期待什么。
  • 您可能需要考虑将学习精力花在 tcsh 脚本之外的其他事情上。这样的技能充其量只能被认为是深奥的,如果你被要求编写 shell 脚本,bourne 或 bash 将是几乎所有环境中的最佳选择。还要考虑到有人提出csh is actually considered harmful。虽然 tcsh 不完全是 csh,但它具有许多结构限制。

标签: bash shell tcsh


【解决方案1】:

这是脚本的 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 - 在读取的数据中禁用反斜杠转义和续行的解释

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 2017-05-08
    • 2013-02-02
    相关资源
    最近更新 更多