awk - argc / argv не выдает ожидаемого вывода при запуске его из файла - PullRequest
1 голос
/ 17 мая 2019

Я сделал этот код awk для печати 2 имени

#! /usr/bin/awk -f

BEGIN {
    for (i=0; i < ARGC; i++)
    print ARGV[i]
} inventory-shipped BBS-list

Я ожидаю, что результат будет

awk
inventory-shipped
BBS-list

но когда я его запускаю, скрипт все равно хочет, чтобы я что-то написал на нем для печати, хотя список, который я ожидаю напечатать, уже есть. Но когда я пишу это из терминала, как это

$ awk 'BEGIN {
        for (i=0; i <ARGC; i++)
        print ARGV[i]
}' inventory-shipped BBS-list

Я могу напечатать ожидаемый результат.

Ответы [ 3 ]

1 голос
/ 17 мая 2019

Не используйте shebang для выполнения awk из сценария оболочки, просто вызовите его:

#!/bin/env bash

awk '
BEGIN {
    for (i=0; i < ARGC; i++)
    print ARGV[i]
}
' inventory-shipped BBS-list

Это даст вам гораздо больше гибкости в том, как разделить параметры сценария оболочки на переменные awk и файл awk.имена или делать что-нибудь еще, что вам нравится.

1 голос
/ 17 мая 2019

Вы можете попробовать этот

script.awk

#!/usr/bin/awk -f
BEGIN {
    for (i=0; i < ARGC; i++)
    print ARGV[i]
}

запустить скрипт

chmod a+x script.awk
./script.awk inventory-shipped BBS-list

output

awk
inventory-shipped
BBS-list
1 голос
/ 17 мая 2019

Вы не можете поместить аргументы командной строки в скрипт.Вы должны запустить его как

./scriptname inventory-shipped BBS-list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...