Сценарий awk
ожидает, что его аргументы командной строки, отличные от -option, будут именами файлов, над которыми сценарий должен действовать (, если они не заданы, он действует на стандартном вводе ).
Таким образом, когда вы используете #!/usr/bin/awk -f
в файле скрипта awk
, это сообщает системе, что текст самого файла должен быть передан в awk -f
.Любые другие аргументы командной строки будут интерпретироваться как входные файлы или как дополнительные флаги дляawk
:
#!/usr/bin/awk -f
BEGIN {
for (i in ARGV) {
printf("ARGV[%d] = %s\n", i, ARGV[i]);
}
printf("var = %s\n", var);
}
$./script.awk -vvar=hello ~/.profile
ARGV[0] = awk
ARGV[1] = /home/kk/.profile
var = hello
Проверка командной строки на наличие опций заканчивается на первом аргументе, не являющемся опцией:
$./script.awk ~/.profile -vvar=hello
ARGV[2] = -vvar=hello
ARGV[0] = awk
ARGV[1] = /home/kk/.profile
var =
Для того, чтобы awk
был полезен для чего-либо, ему нужны входные данные. Эти данные обычно поступают из одного или нескольких входных файлов, указанных в командной строке, или при отправке данных в стандартный входной поток.
Кроме блоков BEGIN
и END
, каждый блок в скрипте awk
будет применяться к каждой записи (каждой строки по умолчанию )входных данных по очереди.
Похоже, что apparmor блокирует доступ. Способ исправить это для пакетов, установленных через оснастку , — запустить
snap connect app-name:removable-media
Однако моментальная установка GitKraken в настоящее время несовместима с этим подключаемым модулем:
> error: snap "gitkraken" has no plug named "removable-media"
Решением здесь будет установка gitkraken или подобных приложений из файла.deb.