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

Sun*_*mar 2 linux if-statement csh

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

如果语句执行成功,则else将进行无限循环,并且无法退回到promt.

有什么建议可以解决吗?

/home/sun_cdmasee>if ( 25 == 25 )  then ; echo "yes" ; else  echo "no" ; endif
Run Code Online (Sandbox Code Playgroud)

其他?

其他?

其他?

小智 10

尽管已经很老了,还是回答这个问题,因为这是谷歌的第一个点击,如果有人来寻找它,他们很可能会来到这里。

手册可能会说这是不可能的,但不是使用单个 if,而是可以使用相反形式的 if 来实现相同的功能:

if ("a" =~ "b") echo "wrong"; if ("a" !~ "b") echo "right"
Run Code Online (Sandbox Code Playgroud)

同样可以应用于别名:

alias blabla 'if ("\!:1" =~ "bla*") echo "chat"; if ("\!:1" !~ "bla*") echo "quiet"'
Run Code Online (Sandbox Code Playgroud)

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


rob*_*off 7

手册页说不可能:

(单词else并且endif必须出现在输入行的开头; if必须单独出现在其输入行或之后else.)

不要尝试在csh中编程.甚至不要将它用作交互式shell.

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

  • 我的工作 (EE) 需要 (t)csh,因此您应该用“如果您有选择,...”来限定您的建议。由于 EDA 在 SunOS 上启动(默认为 csh),EE 社区陷入了 csh 的困境。 (4认同)