대 커맨드 라인에서 서로 다른 결과를 얻을 수 있습니다. 그래서 myscript.ksh
에 이런 짓을 : 나는 lastLine
에 27
의 기대 값을 수행 할 때
fileName=$1
....
lastLine=`grep -n -m7 '\$' ${fileName}.asm | tail -n 1 | awk -F':' '{print $1}'`
....
echo ${lastLine}
만 7
입니다. 여기 내가 작업하고있는 파일의 처음 30 줄이 있습니다.
$***********************************************************************
$ THE FOLLOWING BULK DATA ENTRIES RELATED TO EXT. SUPERELEMENT 5000
$ ARE FOR USE IN THE MAIN BULK DATA PORTION OF THE ASSEMBLY RUN
$***********************************************************************
$
SEBULK 5000EXTOP2 MANUAL 12
$
SECONCT 5000 0 NO
60582 60582 180021 180021 180023 180023 180057 180057
180941 180941 180942 180942 180943 180943 180944 180944
180946 180946 180947 180947 204499 204499 231050 231050
231060 231060 232050 232050 232060 232060 252300 252300
252301 252301 253072 253072 253073 253073 401101 401101
401102 401102 401103 401103 401104 401104 402101 402101
402102 402102 402103 402103 402104 402104 403101 403101
403102 403102 403103 403103 403104 403104 404101 404101
404102 404102 404103 404103 404104 404104 405101 405101
405102 405102 405103 405103 405104 405104 406101 406101
406102 406102 406103 406103 406104 406104 407101 407101
407102 407102 407103 407103 407104 407104 408101 408101
408102 408102 408103 408103 408104 408104 631050 631050
631060 631060 632050 632050 632060 632060 652300 652300
652301 652301 653072 653072 653073 653073 662050 662050
662060 662060 677500 677500 677600 677600 678516 678516
678622 678622 679514 679514 679620 679620 703077 703077
703078 703078 1184100 1184100 1184200 1184200 1184400 1184400
$
CORD2C* 220102 220104 0.000000000E+00 0.000000000E+00
* 0.000000000E+00 0.000000000E+00 0.000000000E+00 0.100000000E+01
* 0.100000000E+01 0.900000000E+02 0.100000000E+01
내가하려는 것은이 단계에서이 파일의 SECONCT 항목을 다른 곳으로 복사하는 것입니다. SECONCT
으로 시작하여 7th $
으로 끝나는 것으로 알고 있습니다. 내가 커맨드 라인에서 작동하지만 스크립트에서는 작동하지 않는다고 말했다. 내가 명령 줄에서 "`"연산자를 사용하는 경우이 오류가 얻을 : 그래서이 해당 운영자에게 관련
-ksh: 7: not found [No such file or directory]
을하지만, 내가 전에이 문제를 가진 적이 없었습니다. 어떻게 수정해야합니까?
업데이트 : 는 여기 set -x
그것을 실행 한 출력 : 오류가 \$
에서입니다
+ grep -n -m7 '$' sq93a3mkop2_4hz.asm
+ awk -F: '{print $1}'
+ tail -n 1
+ lastLine=7
가 $
로 읽을. 하지만 어떻게 수정해야합니까?
셸 스크립트를 디버깅하려면 처음에'set -x'를 입력하십시오. 그러면 모든 명령이 실행되고 모든 변수가 채워집니다. 이것은 대개 도움이됩니다. – Barmar