Как распечатать целый массив в tcsh

Между тем я записал свою собственную программу - audria - способный к контролю использования ресурсов одного или нескольких процессов, включая текущее/среднее использование ЦП, использование виртуальной памяти, загрузку IO и другую информацию.

0
07.11.2013, 23:54
2 ответа

В tcsh Вы использовали бы массивы следующим образом.

Определите массив

set myarray = ( element1 element2 element3 element4 etc )

Произведите целый массив

printf '%s\n' "$array[-]"

Элемент печати 1 - 3

printf '%s\n' "$array[1-3]"

Примечание: В Bash первый элемент массива запускается в 0 (нуль).

Также добавьте set verbose сверху Вашего сценария для наблюдения, какие строки интерпретируются и где он перестал работать.

0
28.01.2020, 02:52
  • 1
    Как это обратилось бы Word too long ошибка? –  Keith Thompson 08.11.2013, 01:04
  • 2
    @KeithThompson удостоверяясь он понимает, как массивы работают в *csh оболочки. –  Valentin Bajrami 08.11.2013, 01:08
  • 3
    Хорошо, но echo "$array" должен работать отлично для печати целого массива - за исключением "Word слишком долго" проблема, к который printf '%s\n' "$array[-]" одинаково уязвимо. –  Keith Thompson 08.11.2013, 01:10
  • 4
    @KeithThompson кроме он показывает set array только, который закончится ни к чему выводу (пустого). Он, вероятно, переопределяет массив так или иначе и приводит к ошибке. set array; echo $array ничего не должен возвращать, уже не говоря о "Word слишком долго" –  Valentin Bajrami 08.11.2013, 01:16
  • 5
    Хм. Я принял это set array было сокращение фактической команды, которую он использовал. Если он получал "слово слишком долго", он, очевидно, устанавливает его на что-то. Ваш недавний комментарий к вопросу является хорошим. –  Keith Thompson 08.11.2013, 01:25

Должно быть, у вас очень старая версия tcsh, которая Слишком длинное слово было снято в tcsh версии 6.14.03 в 2006 году.

echo "$array"

Конкатенация элементов массива будет передана в echoкак один элемент, но произойдет сбой, если любой из них содержит символ новой строки.

echo "$array:q"

Правильнее было бы пройти конкатенацию всех элементов.

Передать все элементы массива (, кроме пустых; хотя это будет исправлено в следующем выпуске)как отдельные аргументы для echo, это будет:

echo $array:q

Но если echo "$array"не работает для вас с Word слишком длинным , echoв этой очень старой версии также может завершиться ошибкой с echo :Слишком много аргументов. .

1
28.01.2020, 02:52

Теги

Похожие вопросы