可以用括号代替“then”吗?

智障的*_*障的人 10 shell-script

我首先学会了如何用一种C语言编码,并使用

if ( code )
then 
code
fi
Run Code Online (Sandbox Code Playgroud)

让我很难阅读我的代码(不要问为什么)。有替代品then吗?

像这样的东西:

if ( code ) {
 code
}
fi
Run Code Online (Sandbox Code Playgroud)

Mic*_*mer 21

没有替代品,但如果您确实需要大括号,则可以同时使用两者:

if true ; then {
    something
} fi
Run Code Online (Sandbox Code Playgroud)

它使用一个不必要的显式支撑命令组作为then块的主体。then运行时,大括号中的任何命令都将在当前 shell 中执行,就好像大括号不存在一样。

我不会真正推荐这种风格的一般或其他人需要阅读的代码,但它确实为您提供了您想要的大括号,如果您使用的编辑器需要大括号或类似的东西。


Cel*_*ada 15

你似乎在寻找的C shellcshtcsh,等...)。请注意,专家建议不要将其用于编程

我不确定您认为不吸引人的部分是否then是下一行的事实?如果是这样,请考虑使用以下样式:

if condition; then
    stuff
fi
Run Code Online (Sandbox Code Playgroud)

我不得不承认,像fiforifesacfor case(但不是elihwfor while!)这样的拼写语句名称倒过来有点古怪。但这是标准的 Bourne shell,您可以使用的最便携的 shell 语法。

  • 您是否尝试过 matchit vim 插件?它支持 bash 中 if/fi 的 % 跳转以及许多其他语言中的许多其他块。看这里 - http://www.vim.org/scripts/script.php?script_id=39 (8认同)

hel*_*hod 9

也许这对眼睛更容易:

[ condition ] && {
   # statement 1
   # statment 2
   # ...
}
Run Code Online (Sandbox Code Playgroud)

除此之外,习惯就好。使用语言的习语。


mik*_*erv 5

以下是那里附近。而且很奇怪。

: if; { code; } && {
    code
}
Run Code Online (Sandbox Code Playgroud)

我个人从不喜欢...

if true; then
more;fi
Run Code Online (Sandbox Code Playgroud)

...形成我自己。当控制词引导时,我喜欢它。对我来说,流行的...;then形式出现在我看来总是很奇怪。

if    this && that
then  do these things too
else  i will probably get upset
fi
Run Code Online (Sandbox Code Playgroud)

这几乎与您的要求完全相反,但这是另一种方式。您还可以根据需要将任何想要的重定向添加到fi行上,它们将应用于整个块。