在编写脚本的过程中,我会以不同的方式和不同的程度使用命令的输出 - 以便对手头的任务进行故障排除。例如,在这个片段中,它读取应用程序的图标资源并返回是否不是它具有典型的 .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
不可避免地,随着每个 bug 被压制,并且stdout
开始更多地与实际功能与调试过程相关,这个反馈通常要么被注释掉,要么被静音,要么被删除——原因很明显。
但是,如果想提供一个简单的选项——无论是硬编码,还是作为参数传递,以在运行时选择性地显示一些、全部或不显示“这种”消息——提供这种简单功能的最佳方式是什么?我希望基本上复制它的功能,set -x
但不是逐行列出,它只会打印我专门设计的通知。
echo
用if
检查 a 的 a替换每一个似乎过分了,但debug=1|0
我一直无法在我的自己的脚本。这个小小的表达似乎很有希望,但很少有文档 re:在那里(尽管我确信这是这个难题的关键)getopts
getopt
2>$1
[ $DBG ] && DEBUG="" || DEBUG='</dev/null'
check_errs() {
# Parameter 1 is the return code Para. 2 is text to display on failure.
if [ "${1}" -ne "0" ]; then
echo "ERROR # ${1} : ${2}"
else
echo "SUCESSS "
fi }
任何简洁和可重复使用的技巧都会受到欢迎,如果我完全错过了这条船,或者它是一条蛇,它会咬我 - 我道歉。