Нет. Невозможно назначить нескалярные переменные таким образом в командной строке. Но сделать это не так уж и сложно.
Если вы можете принять фиксированное имя массива:
awk -F= '
FNR==NR { a[$1]=$2; next}
{ print a[$1] }
' <(echo $'index=value\nindex two=value two') <(echo index two)
Если у вас есть файл, содержащий синтаксис awk для определений массивов, вы можете включить
это:
$ cat <file.awk
ar["index"] = "value"
ar["index two"] = "value two"
EOF
$ gawk '@include "file.awk"; BEGIN{for (i in ar)print i, ar[i]}'
или
$ gawk --include file.awk 'BEGIN{for (i in ar)print i, ar[i]}'
Если вы действительно хотите , вы можете запустить gawk
с помощью -E
вместо -f
, в результате чего вы получите неинтерпретируемую командную строку. Затем вы можете обработать эти параметры командной строки (если это похоже на присвоение переменной, назначьте переменную). Если вы хотите пойти по этому пути, может быть полезно посмотреть ngetopt.awk .
Вы добавляете свой файл в игнор-лист клавишей-I
(буква i прописная ). Вы должны заменить его на-l
(букву L маленькую)
ls -l myFile
Ответ находится в man ls
,
-I, --ignore=PATTERN
do not list implied entries matching shell PATTERN
Другими словами, вы попросили ls
проигнорировать этот файл и указать только другие файлы.
Если вам нужен длинный список, вы должны использовать опцию -l
нижний регистр 'ell'.
-l use a long listing format
Так что попробуй
ls -l myFile