回答:
シェルのno-opコマンドは:
(コロン)です。
if [ "$a" -ge 10 ]
then
:
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
bashマニュアルから:
:
(コロン)
引数を拡張してリダイレクトを実行する以外に何もしません。戻り状況はゼロです。
:
私のチームの誰かが書いた場合、彼らに変更してもらいます。
true
コンテキストで誰かが使用した場合、私は彼らにそれを変更してもらいます。if true
大丈夫、then true
間違っているようです
if ! condition; then do something; fi
代わりに使用するようにコードを書き換えることもできますif condition; then :; else do something; fi
。
おそらくtrue
次のコマンドを使用できます。
if [ "$a" -ge 10 ]; then
true
elif [ "$a" -le 5 ]; then
echo "1"
else
echo "2"
fi
代わりに、あなたの例の場合(しかし必ずしもすべてではない)は、if / elseを並べ替えることです:
if [ "$a" -le 5 ]; then
echo "1"
elif [ "$a" -lt 10 ]; then
echo "2"
fi
true
とfalse
効果的にはるかにスクリプトが懸念されると何-OPSありませんが、原則的に、彼らは可能性がありので、おそらくこの構文を受け入れる一部のシェルではフォーク:
優れています。
true
、false
組み込みです。古い殻のために、true
、false
、さらには:
外部コマンドであるかもしれない(おそらくだけでは後者参照してくださいねかかわらず、非常に古い殻を)。
:
意図が何であるかがより明確であるという理由だけで私は好む
no-opコマンドに関する元の質問には答えていませんが、「このブランチでは何もする必要がない」と思われる場合の多くの(ほとんどではない)問題は、このブランチが勝つようにロジックを再構築するだけで回避できます。発生しません。
OPの例を使用して、一般的なルールを示します
$ aが「10」より大きい場合は何もせず、$ aが「5」より小さい場合は「1」を出力し、それ以外の場合は「2」を出力します
一般的な条件を他のすべての条件に適用できるようにする$a
ため$a < 10
、条件が10を超える分岐を回避する必要があります。
一般的に、Xのときに何もしないと言うときは、X の分岐を避けるように言い換えます。通常、Xを否定して他のすべての条件に適用することで、回避を実現できます。
したがって、ルールが適用されたOPの例は、次のように再構築できます。
if [ "$a" -lt 10 ] && [ "$a" -le 5 ]
then
echo "1"
elif [ "$a" -lt 10 ]
then
echo "2"
fi
上記のバリエーションで、すべてを$a < 10
条件で囲みます。
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(この特定の例では、@ Flimzysの再構築は確かに優れていますが、何もしない方法を検索するすべての人々に一般的なルールを与えたかったのです。)
echo "put stuff here"
ている場合、それを配置 すると、ログイン以外の使用の一部(scpが壊れるなど)が中断され、空白/コメントのみが実行時エラーを引き起こします。
true
。シェルに組み込まれており、何もしません。