比較演算子を使用してシェルスクリプトで長い行を置き換える

比較演算子を使用してシェルスクリプトで長い行を置き換える

私のBashコードでは、時々 "OR"をテストするために比較演算子に長い引数を使用します。

次のように:

if [[ $production_check_linux_disks_quantity == false  ]] || [[ $production_linux_mount_point_reference_to_ambari_definition == false ]] || [[ $production_check_linux_mount_point_quantity == false ]] || [[ $production_show_linux_disks_simulation == false ]]
then

問題は、構文が長すぎて見苦しいことです。

短くてエレガントにする方法についてのアイデアはありますか?

ベストアンサー1

から行を切ることができます||。実際、この行はいつでも切断できます。制御演算子。したがって||、、、、、、、、、、、または!。​​​​​​​&&&;;;||&()

これはあなたの例の正しい構文です。たとえば、次は必要ありません\

if [[ $production_check_linux_disks_quantity == false  ]] || 
   [[ $production_linux_mount_point_reference_to_ambari_definition == false ]] || 
   [[ $production_check_linux_mount_point_quantity == false ]] || 
   [[ $production_show_linux_disks_simulation == false ]]; then
    echo yes
fi

\制御演算子で終わらない場合は複数行を連結する必要がありますが、制御演算子で終わる場合は連結する必要はありません。

また、if [[ $var == false ]]変数の値が$var文字列であるかどうかを確認するfalseので、で作成する方が良いでしょうif [[ $var = 'false' ]]。あなたのコードが$var-1または0であるか、設定されていない場合はtrueと評価されることをお勧めします。

おすすめ記事