Для вывода weird

Это мой сценарий:

#!/bin/bash E=0;j=0 for i in ABC do Erray=$(sed -n '/Local net energy/p' log | awk '{print $7}') A[j]=j echo $i = $Erray kJ/mol >> Energy let j=j+1 echo $j $i $Erray ${A[j]} done cat Energy 

Выход:

 1 A 2.692036739192E+03 2 B 2.679751695663E+03 3 C 4.732453844269E+03 A = 2.692036739192E+03 kJ/mol B = 2.679751695663E+03 kJ/mol C = 4.732453844269E+03 kJ/mol 

Это не должно быть так. Порядок вывода «сортируется», а ${A[j]} не появляется.

Редактировать Теперь я знаю, почему вывод сортируется. Я забыл добавить >> Energy после второго echo . Проблема с массивом все еще сохраняется. Мои входные данные большие, я только извлекаю строки, которые имеют значение.

 print energy 2 - 1 end Local net energy (PE 0) = 2.692036739192E+03 kJ/mol Global net ELEC energy = 2.692036739192E+03 kJ/mol 

  • Как получить IP-адрес клиента SSH с помощью сценария оболочки?
  • Создание нескольких сценариев с разными именами файлов
  • Найти различные строки в отдельных строках файла
  • Функция не выполняется в скрипте
  • Команда Bash для разделения одной строки текста на две строки
  • Я могу запустить код из терминала, но ту же команду, выдающую ошибку при запуске в сценарии оболочки
  • Как узнать, что происходит в фоновом режиме, когда мы запускаем файл .sh в Linux?
  • Как отобразить всю строку текста?
  • One Solution collect form web for “Для вывода weird”

    В вашем скрипте j монотонно увеличивается – он начинается с 0 и подсчитывается по одному на итерацию цикла. Вы присваиваете значение A[j] в своем цикле, затем вы увеличиваете j , затем пытаетесь распечатать A[j] – но теперь, когда j был увеличен, этот индекс в A еще не установлен, поэтому есть ничего не печатать (расширение переменной пусто). Если вы печатали ${A[j-1]} вы должны видеть вывод.

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.