Хотя мне нравится ответ Justin, я чувствую, что он более точно представляет фильтр, а не поиск. Что, если я хочу знать об автомобилях с именами, которые запускаются с бегунка?
способ, которым я вижу его, Вы могли встроить его в способ, которым Вы обрабатываете определенные ресурсы:
/cars/cam*
Или, Вы могли просто добавить его в фильтр:
/cars/doors/4/name/cam*/colors/red, синий, зеленый
Лично, я предпочитаю последнего, однако я ни в коем случае не эксперт по REST (сначала услышавшему о нем только приблизительно 2 недели назад...)
Я получил следующий ответ от группы обсуждения:
можно импортировать (включить, что угодно) процедура (функция, как бы это ни называлось) от внешнего файл. Это ключ к написанию сценарий тестирования: вы разбиваете свой сценарий в независимые процедуры которые затем можно импортировать в оба ваш запущенный скрипт и ваше тестирование скрипт, а затем у вас есть сценарий должен быть как можно более простым.
Этот метод похож на внедрение зависимостей для сценариев и звучит разумно. Предпочтительно избегать сценариев bash и использовать более проверяемый и менее непонятный язык.
There is actually a shunit2, an xUnit based unit test framework for Bourne based shell scripts. I haven't used it myself, but it might be worth checking out.
Similar questions have been asked before:
I have found it hard to justify using bash for larger scripts when Python has such huge advantages:
if [ x"$foo" = x"$bar"]; then ...
' which is prone to errors.getopt
module (and there's an even easier module for parsing arguments, but the name escapes me).mysql
command in bash, but it's not the nicest way to write code).$*
or "$*"
or "$@"
or $1
or "$1"
, spaces in filenames isn't an issue, etc, etc, etc.Now I only use bash for the simplest of scripts.
Why do you say that it's "hard" to test bash scripts?
What's wrong with test wrappers like:
#!/bin/bash
set -e
errors=0
results=$($script_under_test $args<<ENDTSTDATA
# inputs
# go
# here
#
ENDTSTDATA
)
[ "$?" -ne 0 ] || {
echo "Test returned error code $?" 2>&1
let errors+=1
}
echo "$results" | grep -q $expected1 || {
echo "Test Failed. Expected $expected1"
let errors+=1
}
# and so on, et cetera, ad infinitum, ad nauseum
[ "$errors" -gt 0 ] && {
echo "There were $errors errors found"
exit 1
}