【问题标题】:Cannot get if statement to work无法使 if 语句起作用
【发布时间】:2017-04-23 04:22:21
【问题描述】:

无法弄清楚如何让csh if 语句使用 expect 来工作。

这行代码有效

if(4 > 3) echo "4 is greater than 3."

$ 4 is greater than 3.

这行代码不行

if (4 > 3) $myvar = 5

0: Command not found (i.e. myvar = 0)

这个也没有

if (4 > 3) then $myvar = 5

IF: Improper then

我做错了什么?我最好将所有这些都放在一行中,或者以某种方式将其放入send 命令的expect 脚本中。如果我不能在一行中得到它,我是否使用\ 字符?

【问题讨论】:

  • 您的问题不清楚。请说明每个示例行是哪种语言。在 IF 语句中,有时写“then”,有时不写。 "$myvar" 在不同的语言中有不同的含义。您使用了太多标签 - 我们可以谈论一种语言,而不是 shell csh tcl 期望吗?
  • @linuxfan 我猜问题在于使用expect 来自动化使用csh 的远程系统。这将使标签混合变得有意义。它可能都嵌入在 bash 脚本中以获得额外的“乐趣”。答案将涉及正确引用,我敢打赌......

标签: shell csh


【解决方案1】:

您似乎将 csh 语法与 Bourne shell 语法混淆了。

您使用set name = value 分配变量。 $name = value 不起作用(实际上,这在 Bourne shell 中也不起作用,它是 name=value)。

对于多行ifs,您只需要then。把它留给单行ifs。

把它们放在一起:

if (4 > 3) set myvar = 5

或:

if (4 > 3) then
    set myvar = 5
endif

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多