2017-04-23 129 views
0

不能弄清楚如何得到csh如果语句工作使用expect。我几乎坚持使用csh,所以裸露在我身边。不能得到如果语句工作

这行代码工作

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命令中。如果我无法在一行上得到它,我会使用\个字符吗?

+0

你的问题还不清楚。请说明每个示例行是哪种语言。在IF语句中,有时你会写“然后”,有时候不会。 “$ myvar”在不同的语言中有不同的含义。你使用了太多标签 - 我们可以谈论一种语言,而不是shell csh tcl expect? – linuxfan

+0

@linuxfan我猜测问题是关于使用'expect'来自动化使用'csh'的远程系统。这会使标签混色变得有意义。它可能全部嵌入在bash脚本中以获得额外的“乐趣”。答案将涉及获取报价权,我敢打赌... –

回答

1

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

您可以使用set name = value指定变量。 $name = value不起作用(实际上,这在Bourne shell中也不起作用,它在name=value处)。

您只需要then多行if s。将其留作单线if s。

全部放在一起:

if (4 > 3) set myvar = 5 

或:

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