「then」を角かっこで置き換えることはできますか?


10

最初にC言語でコーディングする方法を学び、

if ( code )
then 
code
fi

コードを読むのが本当に難しくなります(理由は尋ねないでください)。の代替品はありthenますか?

このようなもの:

if ( code ) {
 code
}
fi

以下の答えが役立つかもしれませんが、もし私が付け加えるなら、異なる言語の構文に慣れるのは非常に良い考えです。ソフトウェア開発での就職先を見つけたい、またはそのためにシステム管理者として就職したい場合は、さまざまな構文を認識して使用する方法を学ぶ必要があります。できるだけ柔軟に対応することで、雇用主にとってより価値のあるものになります。
OldTimer 2015

回答:


21

代用はありませんが、中括弧が本当に必要な場合は両方を使用できます。

if true ; then {
    something
} fi

これは、ブロックの本体として不要な明示的にブレースされたコマンドグループを使用しthenます。中かっこ内のコマンドは、実行時に現在のシェルで実行されるだけでthen、中かっこがなかった場合とまったく同じです。

私はこのスタイル一般や他の誰かが読む必要のあるコードにはあまりお勧めしませんが、あなたが望むブレースを提供します。そんな感じ。


「推奨する価値がない」もう1つは次のとおりです–中かっこ:{ if { [[ a == aa ]];};then { echo yes;};else { echo no;}; fi;}–基本的に、bash十分に使用すると、標準の 構文は十分に馴染みやすくなるため、それほど問題にはなりません。
Peter.O 2015年

15

あなたが探しているように見えるCシェルcshtcshなど)。専門家はプログラミングに対してこれを推奨しないことに注意してください。

あなたが魅力的でないと考える部分がthen次の行にある事実であるかどうかわかりませんか?その場合は、次のスタイルの使用を検討してください。

if condition; then
    stuff
fi

私は後方のようにそのスペル文名を認めざるを得ないfiためifesacのためのcase(しかしないelihwためのwhile一種風変わりなのです!)。しかし、これは標準のBourneシェルであり、使用できる最もポータブルなシェル構文です。


あなたの答えをありがとう-私はthen魅力的なものを見つけません、それは私のエディターが対応する{}ペアをハイライトするだけです、そしてそれは私が簡単にすべてのifステートメントを見て、何かがうまくいかなかったかどうか見ることができるので、私がなんらかのエラーがあるときに役立ちます。
智障的人

1
ああそう。それに対応する中括弧/括弧/括弧にジャンプするplus vi%コマンド。私は同情します。私は欠場vi%Pythonでプログラミングする場合のコマンドを。
Celada、2015年

8
matchit vimプラグインを試しましたか?bashのif / fiの%ジャンプ、および他の多くの言語の多くの他のブロックをサポートします。ここを参照-vim.org/scripts/script.php?script_id=39
amisax

先端をありがとう@AmitKumar。ちょっと見てみます!
Celada 2015年

9

多分これは目に優しいです:

[ condition ] && {
   # statement 1
   # statment 2
   # ...
}

それ以外は慣れるだけ。言語の慣用句を使用します。


1
しかし、通常は不要なバシズムを失い、ブラケットのセットを1つだけ使用します。
Josip Rodin

5

以下はその近くです。そして奇妙な。

: if; { code; } && {
    code
}

私は個人的には好きではありません...

if true; then
more;fi

...自分を形成します。コントロールワードが先行しているときに私はそれが好きです。優勢な...;then形が生まれたのはいつも奇妙に思えました。

if    this && that
then  do these things too
else  i will probably get upset
fi

それはあなたの要求とほぼ完全に逆ですが、それを行う別の方法です。fi必要に応じて、必要なリダイレクトを行に追加することもできます。リダイレクトはブロック全体に適用されます。


この一般的な形式は、Cのような言語if(...) {と同じ行に左中かっこを残して、一般的なの単なる別の化身のifようです。
Ruslan

@Ruslan-多分-しかし、この行は実際にはCでまったく違いがありませんか?
mikeserv 2015年

そうですが、改行はシェルに違いをもたらしませんか?セミコロンの後の条件ifは、次の行にある場合でも、インタープリターにコマンドの継続を探しさせます。
ルスラン

@Ruslan-そう- ;その場合はdelim を使わなければなりません。それが彼らがそうする理由です。
mikeserv 2015年

:このように組み込みのシェルを使用すると、コード行をバイト単位でC構文に近づけることができるため、決して推奨されません。
Josip Rodin、

0

ここに方法があります:

[ "$var" = "find" ] && echo "found"

以下と同等です。

if [ "$var" = "find" ]; then
  echo "found"
fi

質問で述べているように、彼は括弧を望んでいます。の{...}周りにいくつかを置くecho "found"と、正しい方向に向かいます。
Peter.O 2015年

-2

私は常に使用します:

if (code); then
   code;
fi

おそらくあなたが望むものとは正確には違うかもしれませんが、それはもう少しcのようです。


2
これによりサブシェルが発生し、パフォーマンスが低下します。
ウィル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.