Cha*_*ffy 20
而不是set -e使用ERR陷阱; 您可以传入$BASH_LINENO以获取发生错误的特定行号.我在/sf/answers/13013031/的答案中提供了一个利用此功能的脚本
总结一下:
error() {
local sourcefile=$1
local lineno=$2
# ...logic for reporting an error at line $lineno
# of file $sourcefile goes here...
}
trap 'error "${BASH_SOURCE}" "${LINENO}"' ERR
Run Code Online (Sandbox Code Playgroud)
制作错误.sh
set -e
trap 'echo "ERROR: $BASH_SOURCE:$LINENO $BASH_COMMAND" >&2' ERR
Run Code Online (Sandbox Code Playgroud)将它 ( . err.sh) 包含在您的所有脚本中。
替换任何
... | while read X ; do ... ; done
和
while read X ; do ... ; done < <( ... )
在脚本中让陷阱在错误消息中给出正确的行号/命令
| 归档时间: |
|
| 查看次数: |
3286 次 |
| 最近记录: |