bash
変更する必要がある次の条件付きテストがあります。
if (( exec_rc == 1 )) && [ -z "$keymap_actm" ] && [ -n "$modmap_actm" ]; then
(( exec_rc == 1 ))
常に真でなければなりません。
しかし、どちらかが真であれば、[ -z "$keymap_actm" ]
条件[ -n "$modmap_actm" ]
本文を実行したいと思います。
私が望むことを達成するための読みやすい方法は何ですか?
ベストアンサー1
全体的に使用される[[ … ]]
(a条件式構造)。条件式の内部には整数間の同等性が指定されています-eq
(テキストパターンのマッチングが実行されます。これは、どの==
値を使用できるかによって、特定のスクリプトで動作または動作しない可能性があります)。exec_rc
if [[ $exec_rc -eq 1 && (-z $keymap_actm || -n $modmap_actm) ]]; then …
区切り文字の周囲にはスペースが必要です[[ … ]]
(たとえば、コマンド区切り文字の横を除く;
)。条件式内の括弧と演算子の周りにスペースは必要ありません。