如何在csh中的一行中写入if-else语句?

时间:2015-11-16 06:56:59

标签: linux if-statement csh

我使用Cshell,我在oneLine中编写if else语句。

如果语句成功执行,则阻塞进入无限循环,无法退回到promt。

有任何建议如何解决?

/home/sun_cdmasee>if ( 25 == 25 )  then ; echo "yes" ; else  echo "no" ; endif

别的?

别的?

别的?

3 个答案:

答案 0 :(得分:7)

The man page说不可能:

  

(单词elseendif必须出现在输入行的开头; if必须单独出现在其输入行或else之后。)< / p>

Don't try to program in csh.甚至不要将它用作交互式外壳。

顺便提一下,您可以在endif提示符处键入else?,退回到正常的csh提示符。

答案 1 :(得分:1)

尽管年代久远,但仍要回答这个问题,因为这是 Google 的第一个热门话题,万一有人来找它,他们很可能会在这里找到。

手册可能会说这是不可能的,但不是一个单一的 if,只需使用相反形式的 if 即可实现相同的功能:

if ("a" =~ "b") echo "wrong"; if ("a" !~ "b") echo "right"

同样可以应用于别名:

alias blabla 'if ("\!:1" =~ "bla*") echo "chat"; if ("\!:1" !~ "bla*") echo "quiet"'

是的,在 tcsh 中写了十年以上的小东西之后,因为它几乎可以用于任何事情,“不要在 csh 中写”的建议应该带有大量的免责声明,或者更好地形成像“不要在 csh 中编写严肃的脚本”。当它是你的 shell 时,因为相关行业几乎在任何地方都不支持其他 shell,这些光顾响应没有任何用处。

答案 2 :(得分:0)

可以,可以!
在tcsh中(总是在最近的Linux发行版中可用,甚至是MacOS

if ( $?debug_log ) echo "verbose output for debugging purposes ${shell_variable}"