似たようなことをしてその理由を知りたいとき。
[ ${debug:=0} -gt 0 ] && set -x || set +x
条件がset -x
アクティブかどうか。問題は、IFを最初に${debug}
使用できないことです。set +x
debug=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)