Bash и awk - это разные языки, каждый из которых имеет своего переводчика с одинаковым именем. Крошечный образец, который вы показываете, урезан слишком далеко, чтобы иметь смысл:
- Вы пометили оба файла как сценарии оболочки; один использует шебанг
#!/bin/sh
, а другой - расширение .sh
. Очевидно, что оболочка может читать сценарий оболочки, и команда для этого называется .
в оболочке Bourne (или source
в csh и bash).
- Сценарий оболочки назначает переменную, но вы ее нигде не используете. Вы имели в виду передать его сценарию awk?
- И сценарий awk, и сценарий оболочки используют $ 1, что для них имеет разное значение (в bash это из командной строки или команды
set
; в awk - из разобранной строки ввода).
Эти два инструмента часто используются в тандеме, поскольку оболочка лучше сочетает отдельные программы, а awk лучше форматирует табличный или структурированный текст. Это было так часто, что целый язык развивался, чтобы объединить задачи; Корни Perl - это сочетание shell, awk и sed.
Если вы просто хотели передать переменную из сценария оболочки в сценарий awk, используйте -v. Справочная страница - ваш друг.