Проблема с использованием AWK в TCL. Ожидание

Аннотация :Безопасное решение "расширения имени файла" (для моего -script2):

IFS=' ' read -a arr <<<"$1"
printf '<%s>--' "${arr[@]}" ; echo

Наивное решение с использованием переменной un -в кавычках для ее разделения на слова (на основе значения IFS )также подвергает содержимое расширению имени файла *, ? и [ (не менее ).

Эта конкретная строка работает правильно:

$ set "a string with spaces"
$ printf '<%s>--' $1; echo
<a>--<string>--<with>--<spaces>--

Но эта строка явно не работает:

$ set "a bad * string with spaces"
$ printf '<%s>--' $1; echo
<a>--<bad>--<file1>--<file2>--<string>--<with>--<spaces>--

Звездочка расширилась на файлы в PWD.

Здесь -документ

Одним из способов (, который очень часто упускают из виду, но который также очень полезен )для получения раскрытия переменной без «расширения пути», является использование здесь -документа.

IFS=' ' read -ra arr <<-_EOF_
 $1
 _EOF_
 printf '<%s>--' "${arr[@]}" ; echo;

Как описано в руководстве:

If word is unquoted, all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, … …

Обратите внимание, что "расширение пути" не применяется .

Двоюродным братом документа здесь -является строка здесь -, которая делает код короче:

IFS=' ' read -ra arr <<<"$1"
printf '<%s>--' "${arr[@]}" ; echo;

Просто помните, что (внутри двойных кавычек )символы \, $ и `являются особыми.
Из руководства:

the character sequence \ is ignored, and \ must be used to quote the characters \, $, and `

0
09.09.2019, 10:44
1 ответ

В Tcl фигурные скобки аналогичны одинарным кавычкам оболочки. :Подстановка переменных не выполняется. Вам нужно изменить

var1={^$line}
# to
var1="^$line"

и аналогично для 2-го нед.

Однако я не понимаю, почему вы используете 2 awk в конвейере :похоже, вы хотите найти IP-адреса из policy-unique_single_line-src-dst-ip.txt, которые появляются в столбце 1 канала -с разделителямиsort-address-name-ip.txt:

set ips [exec cut {-d|} -f1 sort-address-name-ip.txt | grep -Fxf policy-unique_single_line-src-dst-ip.txt]
0
28.01.2020, 03:18

Теги

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