我使用Cshell,我在oneLine中编写if else语句。
如果语句成功执行,则阻塞进入无限循环,无法退回到promt。
有任何建议如何解决?
/home/sun_cdmasee>if ( 25 == 25 ) then ; echo "yes" ; else echo "no" ; endif
是
别的?
别的?
别的?
答案 0 :(得分:7)
The man page说不可能:
(单词
else
和endif
必须出现在输入行的开头;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}"