Azure DevOps Выпуск конвейера для создания-реакции-приложения и GitFlow?

Использовать не eval!

BashFAQ-50 - Я пытаюсь добавить команду в переменную, но сложные случаи всегда терпят неудачу.

g4]

Поместите его в массив и раскройте все слова с двойными кавычками "${arr[@]}" до not , чтобы IFS разделил слова из-за

Разделение слов .

cmdArgs=()
cmdArgs=('date' '+%H:%M:%S')

и посмотреть содержимое массива внутри. declare -p позволяет видеть содержимое массива внутри с каждым параметром команды в отдельных индексах. Если один из таких аргументов содержит пробелы, цитирование внутри при добавлении в массив предотвратит его разделение из-за разделения Word.

declare -p cmdArgs
declare -a cmdArgs='([0]="date" [1]="+%H:%M:%S")'

и выполните команды как

"${cmdArgs[@]}"
23:15:18

(или) вообще используют функцию bash для запуска команды

cmd() {
   date '+%H:%M:%S'
}

и вызывают функцию как только

cmd

POSIX sh не имеет массивов, поэтому ближе всего вы можете создать список элементов в позиционных параметрах. Вот способ POSIX sh для запуска почтовой программы

# POSIX sh
# Usage: sendto subject address [address ...]
sendto() {
    subject=$1
    shift
    first=1
    for addr; do
        if [ "$first" = 1 ]; then set --; first=0; fi
        set -- "$@" --recipient="$addr"
    done
    if [ "$first" = 1 ]; then
        echo "usage: sendto subject address [address ...]"
        return 1
    fi
    MailTool --subject="$subject" "$@"
}

1
задан Kjell Rilbe 18 January 2019 в 09:52
поделиться