BASH автоматически добавляет одинарные кавычки в строковые переменные - PullRequest
0 голосов
/ 23 февраля 2020

Эта проблема почти аналогична

Я пытаюсь написать скрипт, который выполняет пользовательскую команду для строковой переменной CSV. Проблема в том, что когда я определяю строковую переменную из другой переменной (в данном случае из массива), функция bash заключает элементы в одинарные кавычки, а команда (anothermycommand) прерывается. И если вручную определить строковую переменную со значением, она не будет содержать переменную, и пользовательская команда (anothermycommand) будет работать нормально при ее передаче в команду.

function myfunction {
    declare  -a ARR=($(mycommand $2 | grep "Server:" | awk '{print $2}')) #variable assignment
    echo ${ARR[@]}
    declare -a ARR=('SERVER-123' 'SERVER-432') #static assignment - Values are same to above varibale assignment
    echo ${ARR[@]}
    declare CSV=$(echo ${ARR[@]}| tr ' ' ',')
    anothermycommand  -t ${CSV}

Если я использую назначение переменной (строка 2) для значений $ {ARR [@]} команда прерывается, потому что $ {CSV} заключен в одинарные кавычки. И если я использую прямое назначение (line4), команда работает нормально. Я думаю, что это связано с присвоениями массива, из строки 2 элементы заключены в одинарные кавычки.

Для строки 3 и 7 bash -x debug

+ echo 'SERVER-123' 'SERVER-432'
+ anothermycommand  -t 'SERVER-123,SERVER-432'

Для строки 5 и 7 bash -x debug

+ echo SERVER-123 SERVER-432
+ anothermycommand  -t SERVER-123,SERVER-432

Вывод mycommand $2 | grep "Server:" | awk '{print $2}'

SERVER-123
SERVER-432

Bash info

 $ echo $BASH_VERSION $BASHOPTS
 4.3.48(1)-release checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:interactive_comments:login_shell:progcomp:promptvars:sourcepath

Как сделать эту работу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...