Маршрутизация между двумя сетями с повторяющимися IP-адресами

Поиск — это не то же самое, что выполнение. В частности, источник ожидает список команд, которые могут быть выполнены в текущей оболочке. Следующее взято изhelp.:

Баша.

.:. filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell. The entries in $PATH are used to find the directory containing FILENAME. If any ARGUMENTS are supplied, they become the positional parameters when FILENAME is executed.

Итак, когда вы запустите . file, ваша оболочка прочитает файл и выполнит каждую найденную команду. Однако это означает, что строка shebang игнорируется и обрабатывается как обычный комментарий. Следовательно, ваша оболочка, а не awk, пыталась выполнить BEGIN.

Чтобы избежать этого, вы должны выполнить скрипт, а не искать его. Если по какой-то причине вам просто нужно получить его, напишите awk-команду в скрипте:

awk '
BEGIN { }
{ }
END { }'

Затем вы можете сделать

ls |../a.awk 

Хотя на самом деле я не могу понять, зачем тебе это вообще.


Кроме того, вы должны знать, что.(или sourceв bash )по умолчанию ищет имена файлов в вашем $PATH. Итак, если вы запустите . fooи у вас есть файл fooв текущем каталоге и файл fooв любом каталоге в вашем $PATH, тогда файл, который будет получен, будет файлом в вашем $PATHа не тот, что в вашем текущем каталоге. Чтобы избежать этого, всегда используйте полные пути при поиске:../foo.

1
12.04.2021, 23:39
0 ответов

Теги

Похожие вопросы