bash&変数を使用して「set」を使用するタイミングを決定しますか? [閉鎖]

bash&変数を使用して「set」を使用するタイミングを決定しますか? [閉鎖]

似たようなことをしてその理由を知りたいとき。

[ ${debug:=0} -gt 0 ] && set -x || set +x

条件がset -xアクティブかどうか。問題は、IFを最初に${debug}使用できないことです。set +xdebug=1

テストケース:

dtest(){ [ "${d:=0}" -gt 0 ] && set -x || set +x; var="abc"; echo "${var}"; }
d=0;dtest
d=1;dtest
d=0;dtest

誰かがこの質問をしたかどうかはわかりません。おそらくどの表現を使うべきかわかりません。

ベストアンサー1

関数でxtraceをリセットする必要があります。

dtest(){
  [ "${d:=0}" -gt 0 ] && set -x
  var="abc"
  echo "${var}"
  set +x
}
d=0;dtest
d=1;dtest
d=0;dtest

またはサブシェルを使用してください。

dtest(){
  [ "${d:=0}" -gt 0 ] && set -x || set +x
  var="abc"
  echo "${var}"
}
d=0;(dtest)
d=1;(dtest)
d=0;(dtest)

おすすめ記事