В процессе написания сценария я буду использовать выходные данные команды по-разному и в разной степени - для устранения неполадок в текущей задаче. Например, в этом фрагменте, который читает ресурс значка приложения ивозвращает, имеет ли оно типичное расширение .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
, но вместопострочно, он будет печатать только те уведомления, которые я специально разработал.
Кажетсячрезмерно заменять каждый echo
на if
, который проверяет на debug=1|0
, но я не смог найти краткое объяснение того, как реализовать a 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 }
Любые лаконичные и многократно используемые уловки в этой сделкеменя приветствуют, и если я полностью скучаю по лодке, или если это была змея, и она меня кусала - я прошу прощения.