動作環境
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
NCAR Command Language Version 6.3.0
WRF v3.9を使用。
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Python 3.6.0 on virtualenv
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
ksh version sh (AT&T Research) 93u+ 2012-08-01
関連:bash > readonly > manとサンプルコード | bash -x実行時の表示
codeとdebug実行
#!/usr/bin/env bash
set -eu # for safety
readonly DST_FILE='info_180119.txt'
echo "hello" > $DST_FILE
DST_FILE='dummy_180119.txt'
echo "hello" > $DST_FILE
run
$ bash -x debug_print_180119_exec
+ set -eu
+ readonly DST_FILE=info_180119.txt
+ DST_FILE=info_180119.txt
+ echo hello
+ DST_FILE=dummy_180119.txt
debug_print_180119_exec: line 9: DST_FILE: readonly variable
上記の気になった点として、echo "hello" > $DST_FILE
の部分は+ echo hello
にデバッグ出力される。
どのファイルに書き出ししたのか、標準出力なのか、がデバッグ出力から分からない。
対処方法
色々書かれているが、
answered Jul 4 '13 at 22:56
ack
による「You, ksh使っちゃいなよ」が気になった。
EDIT: If Bash-specific features are not required, and backwards compatibility with the Bourne shell will do, the Korn shell (ksh, tested with version 93u+ 2012-08-01) does a bit better on showing information for redirects:
run
$ ksh -x debug_print_180119_exec
+ set -eu
+ DST_FILE=info_180119.txt
+ readonly DST_FILE
+ echo hello
+ 1> info_180119.txt
debug_print_180119_exec: line 9: DST_FILE: is read only
info_180119.txt
へ出力されている様子が分かるようになった。
kshはどれくらいbashの互換があるかはよくわからない。
bash特有の機能がある場合は使えないでしょう、とのこと。