スクリプトのコマンドラインごとにデバッグ(xtrace)を有効または無効にする方法はありますか?
Windowsシェル( "ms-dos")には "@"があり、コマンドラインの前に付けることができます。エコー(デバッグと言いましょう)が有効(エコーオン)の場合、その行を無効にして表示できます。
Xtrace on(set -x)を検討しますが、 "@"で始まるようにプレフィックスを付けるいくつかの行でその効果を省略できます。次のように:
set -x
@echo Listing...
ls
set +x
出力例:
Listing...
+ ls
file1
file2
シェルスクリプトで似ているものはありますか?
私はそのような演算子を持つシェルを知りません。ただし、ほとんどのシェル(kshは例外)では、xtrace
を次のようにサイレントに切り替えることができます。
{
case $- in
(*x*) set +x;;
(*) set -x
esac
} 2> /dev/null
だからあなたはそれをエイリアスにすることができます:
alias 'xx={
case $- in
(*x*) set +x;;
(*) set -x
esac
} 2> /dev/null'
そして次のように使用します:
set -x
echo traced
xx; echo not traced; xx
echo traced
set +x
Bashでは、shopt -s expand_aliases
(スクリプトのように)非対話型シェルでエイリアスを展開します。