在编写脚本的过程中,我将以不同的方式使用命令的输出,并以不同的程度 - 以便对手头的任务进行故障排除。例如,在此片段中,它读取应用程序的图标资源和返回它是否具有典型的.icns扩展名......
icns=`defaults read /$application/Contents/Info CFBundleIconFile`
if ! [[ $icns =~ ^(.*)(.icns)$ ]]; then
echo -e $icns "is NOT OK YOU IDIOT! **** You need to add .icns to "$icns"."
else
echo -e $icns "\t Homey, it's cool. That shits got its .icns, proper."
fi
不可避免地,因为每个错误都被压扁了,并且stdout
开始更多地涉及实际功能与调试过程,所以这个反馈通常被注释掉,沉默或删除 - 原因显而易见。
但是,如果想要提供一个简单的选项 - 硬编码或作为参数传递,可选地显示部分,全部或全部“此类”的消息运行时 - 提供这种简单功能的最佳方法是什么?我希望基本上复制set -x
的功能,但它不会打印出我已经构建过的通知,而不是逐行概述specificically。
用检查echo
的{{1}}替换每个if
似乎过分,但我无法找到如何的简明解释在我自己的脚本中实现 debug=1|0
/ getopts
方案(永远不能记住哪一个是内置的)等。这个小小的表达看起来很有希望,但是文档很少:getopt
在那里(虽然我确定这是这个难题的关键)
2>$1
这个交易的任何简洁和可重复的技巧都会受到欢迎,如果我完全错过了这条船,或者它是一条蛇,它会咬我 - 我道歉。
答案 0 :(得分:1)
一个简单的技巧是简单地用变量i.n。
替换“logging”echo命令TRACE=:
if test "$1" = "-v"; then
TRACE=echo
shift
fi
$TRACE "You passed the -v option"
如果您愿意,可以为不同类型的消息提供任意数量的消息。
答案 1 :(得分:0)
您可以检查支持bash的常见开源跟踪库。
WKR
Arno-Can Uestuensoez