이것은 내 스크립트입니다.
#!/bin/bash
E=0;j=0
for i in A B C
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
답변1
스크립트에서 는 j
단조롭게 증가합니다. 0에서 시작하여 루프 반복마다 1씩 증가합니다. A[j]
루프에 값을 할당한 다음 이를 증가시킨 다음 j
인쇄하려고 합니다 A[j]
. 그러나 이제 j
값이 증가되었으므로 인덱스가 A
아직 설정되지 않았으므로 인쇄할 것이 없습니다(변수는 아무것도 확장되지 않습니다). 인쇄 중인 경우 ${A[j-1]}
출력이 표시됩니다.