Я хотел бы сохранить все параметры командной строки к сценарию Bash в единственную переменную

данные отображаются в неправильном формате.

вместо двух массивов с отдельными значениями столбцов ...

[ "Joe", "Peter", "Lauren"...
[ 36, 18, 31...

каждая строка в данных должна быть массивом с каждым значением столбца ...

[ "Joe", 36 ],
[ "Peter", 18 ],
[ "Lauren", 31 ],
[119 ] вы должны быть в состоянии исправить, комбинируя значения в ваших map утверждениях.

заменить ...

let firstname = res.map(res => res.firstname);
let age = res.map(res => res.age);

на ...

let data = res.map(res => [res.firstname, res.age]);

, а затем добавить данные в объект карт ...

this.charts.push({
  title: 'Customer Demographics',
  type: 'Bar',
  columnNames: ['Customer', 'Age'],
  roles: [],
  data: data,  // <-- add data here
  options: {
    chart: {
      title: 'Customer Demographics',
      subtitle: 'Sales, Expenses, and Profit: 2014-2017'
    },
    bars: 'vertical' // Required for Material Bar Charts.
  }
13
задан Peter Mortensen 20 August 2019 в 23:06
поделиться

3 ответа

echo "$*"

будет делать то, что вы хотите, а именно распечатывать все аргументы командной строки, разделенные пробелом (или, технически, независимо от значения $ IFS ). Если вы хотите сохранить его в переменной, вы можете сделать

thevar="$*"

Если это не отвечает на ваш вопрос достаточно хорошо, я не знаю, что еще сказать ...

27
ответ дан 1 December 2019 в 17:31
поделиться

Если вы хотите избежать использования $ IFS, используйте $ @(или не заключайте $ * в кавычки)

$ cat atsplat
IFS="_"
echo "     at: $@"
echo "  splat: $*"
echo "noquote: "$*

$ ./atsplat this is a test
     at: this is a test
  splat: this_is_a_test
noquote: this is a test

Поведение IFS также следует за назначением переменных.

$ cat atsplat2
IFS="_"
atvar=$@
splatvar=$*
echo "     at: $atvar"
echo "  splat: $splatvar"
echo "noquote: "$splatvar

$ ./atsplat2 this is a test
     at: this is a test
  splat: this_is_a_test
noquote: this is a test

Обратите внимание, что если присвоение $ IFS было выполнено после присвоения $ splatvar, то все выходные данные будут то же самое ($ IFS не будет иметь никакого эффекта в примере "atsplat2").

27
ответ дан 1 December 2019 в 17:31
поделиться

Посмотрите на переменную $ * . Он объединяет все аргументы командной строки в один.

echo "$*"

Это должно делать то, что вы хотите.

Подробнее здесь.

0
ответ дан 1 December 2019 в 17:31
поделиться