Intereting Posts
awk в solaris 5.8 / получить значение из двух полей / строк Понимание прав на домашнюю папку Как я могу отобразить сообщение из ~ / .profile? Проблемы с Bluetooth с AR3012 на Gentoo Мониторинг файловой системы с использованием файла конфигурации найти все символические ссылки в дереве каталогов, указывающем вне этого дерева Отображение номера недели в определенном формате с помощью ncal или cal Зачем вычислять контрольные суммы загруженных файлов? Использование JQ для получения простого разделительного вывода Возможно ли написать портативные служебные скрипты для управления демоном? Где Postfix хранит вложение по электронной почте? Создайте несколько имен пользователей и UID в Linux с помощью сценария оболочки Ключ к букве «p» не работает повсюду, Ubuntu Linux Netctl заставляет getty очищать экран и повторно отображать сообщение об ошибке Почему некоторые команды не работают при подключении к серверу с помощью FTP?

Переменная переменной оболочки gnuplot и массивы

Мне нужно использовать переменные оболочки в моих командах gnuplot, для которых я использую стиль документа здесь. Мне также нужно использовать циклы внутри кода gnuplot. Обе эти вещи работают.

Теперь – я хочу использовать gnuplot для индекса цикла для доступа к переменной массива оболочки. Здесь я весь день застрял.

У меня есть что-то вроде этого:

for ((i=0; i<=10; i++)) do var[$i] = i*10 done gnuplot<<EOF do for [j=1:10]{ #need to access ${var[j]} somehow val=sprintf("${var[%d]", j) ##doesn't work } EOF 

Доступен индивидуальный доступ, такой как $ {var [1]}. Я подозреваю, что это может потребоваться использование backquotes и / или expr, но я не уверен.

Здесь вы смешиваете синтаксис.

Оболочка увидит ${var[%d] которая немного похожа на переменную оболочки – но это не так. Ты должен попытаться

 cat <<EOF ... EOF 

отлаживать и точно видеть, что происходит. Я думаю, что вы хотите, это нечто большее

 for ((i=0; i<=10; i++)) do var[$i] = i*10 done gnuplot<<EOF values="${var[*]}" do for [j in values] { #need to access ${var[j]} somehow val=sprintf("%d", j) ##access part of the array directly } EOF