У меня есть эта линияКоманда производит различные результаты в командной строке в сравнении файл сценария
grep -n -m7 '\$' myfile.asm | tail -n 1 | awk -F':' '{print $1}'
Который производит этот выход:
27
Я хотел использовать его в сценарий, который редактирует файл. Так что я сделал это в myscript.ksh
:
fileName=$1
....
lastLine=`grep -n -m7 '\$' ${fileName}.asm | tail -n 1 | awk -F':' '{print $1}'`
....
echo ${lastLine}
Когда я делаю это ожидаемое значение 27
в 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
и заканчивается 7-м номером $
. Как я уже сказал, это работает в командной строке, но не в скрипте. Если я использую «`»оператор в командной строке я получаю эту ошибку:
-ksh: 7: not found [No such file or directory]
Так что это связанно с этим оператором, но я никогда не имел эту проблему раньше. Как это исправить?
Update: Я побежал с set -x
здесь выход:
+ grep -n -m7 '$' sq93a3mkop2_4hz.asm
+ awk -F: '{print $1}'
+ tail -n 1
+ lastLine=7
Ошибка из \$
читается как $
. Но как мне это исправить?
Чтобы отладить сценарии оболочки, поместите 'set -x' в начале. Затем вы увидите все исполняемые команды с заполненными переменными. Это обычно помогает. – Barmar