Вы также можете увидеть этот вывод, если у вас есть Busybox . Alpine Linux — хороший пример популярного дистрибутива, который его использует. См.https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#How_to_enable.2Ffix_colors_for_git.3F
Простой способ узнать, используете ли вы Busybox, — запустить:
realpath `which less`
Или если вы используете рыбью скорлупу
realpath (which less)
Если на выходе /bin/busybox
, вы можете решить проблему, установив gnu less .
На Альпах:
sudo apk --update add less
Команда будет отличаться в зависимости от вашего дистрибутива/менеджера пакетов.
Оболочка sh
обычно не понимает массивы, поскольку они не являются частью стандарта POSIX. Имя файла скрипта произвольное, поэтому суффикс имени файла .sh
или .ksh
ничего не значит.
Кроме того, ваш синтаксис назначения массива немного неверен (слишком много пробелов ). Исправил, будет выглядеть
tableList=( Value1 Value2 Value3 )
Обратите внимание на отсутствие пробелов между концом имени переменной и (
.
Чтобы иметь возможность запускать ваш сценарий, вам необходимо выполнить его с оболочкой, реализующей массивы, например ksh93
, bash
, zsh
или yash
(, в зависимости от того, какие другие конструкции оболочки вы используете. ). Обратите внимание, что ksh
в AIX — это ksh88
, который имеет несколько иной синтаксис для присвоения значений массивам (, который используетset -A tableList Value1 Value2 Value3
).
Лучший способ запустить скрипт с помощью ksh93
— это добавить строку#!
-вверху скрипта, указывающую на интерпретатор ksh93
, а затем сделать скрипт исполняемым с помощью chmod +x scriptname
.
Чтобы использовать оболочку ksh93
в AIX, самая первая строка сценария должна выглядеть так:
#!/usr/bin/ksh93
После этого не указывайте явный интерпретатор в командной строке при запуске скрипта:
./scriptname
AFAIR, AIX использует оболочку POSIX на основе ksh88 как /bin/sh
ksh88 не поддерживает
tableList=( Value1 Value2 Value3 )
и это не требуется POSIX.