Я использую задачу VS Code для запуска сценария, который запускает мои шутливые тесты для текущего открытого файла. Он предлагает мне ввести тестовый шаблон и, если что-то введено, передает значение в качестве переменной среды. Я хочу разделить эту переменную на изменяемый массив, переданный в качестве аргументов моему вызову jest
. Поскольку имена тестов почти всегда содержат пробелы (или любой другой символ), я хочу иметь возможность передавать несколько шаблонов в кавычках.
Входные
"test 1" "test 2" "test 3"
Сгенерированные переменные среды
args='"test 1" "test 2" "test 3"'
testFile="path/to/currently opened/file"
Желаемая команда для запуска в скрипте:
npm run test -- "path/to/currently opened/file" -t "test 1" -t "test 2" -t "test 3"
Я понял, как делать все, кроме оценки $args
как массива. Вот что мне нужно для проверки различных попыток его анализа.
#!/bin/bash
echo "$args"
echo
scriptArgs=( $args )
echo ${#scriptArgs}
echo ${#scriptArgs[@]}
echo
scriptArgs=( "${args[@]}" )
echo ${#scriptArgs}
echo ${#scriptArgs[@]}
echo
scriptArgs=( "$args" )
echo ${#scriptArgs}
echo ${#scriptArgs[@]}
echo
scriptArgs=( $(echo $args) )
echo ${#scriptArgs}
echo ${#scriptArgs[@]}
echo
scriptArgs=( "$(echo $args)" )
echo ${#scriptArgs}
echo ${#scriptArgs[@]}
echo
# prints:
#
# "test 1" "test 2" "test 3"
#
# 5
# 6
#
# 26
# 1
#
# 26
# 1
#
# 5
# 6
#
# 26
# 1
Желаемое значение - 3.