Значение и использование /proc/[pid]/make-if-fail

Практически во всех случаях, когда вы используете цикл оболочки for для обработки строк в текстовом файле, лучше использовать awk или вырезать или sed или perl (или любой другой доступный инструмент для обработки текста). Это будет быстрее, проще и без риска нежелательных побочных эффектов (например, установка IFS перед использованием прочтите ).

Например:

awk '{print "curl -XDELETE '\''ADDRESS:PORT/VALUE/VALUE/"$1"'\''"}' \
 /tmp/filename | 
 sh

(сначала запустите его без подключения к sh, bash, тире и т. Д., Чтобы убедиться, что он выдает правильный результат)

Это делает то, что вы хотите, и помещает URL в одинарные кавычки, чтобы учесть имена файлов. с пробелами, подстановочными знаками глобуса, амперсандами, точками с запятой и т. д. в них. Работает для всех файлов, кроме файлов с одинарными кавычками или новой строкой в ​​имени файла.Последнее невозможно исправить с помощью входного файла, разделенного новой строкой, но первое можно исправить, вставив следующее перед оператором print :

gsub(/'\''/,"'"'\\\\''"'");

Я недавно написал объяснение того, что это делает здесь: https://unix.stackexchange.com/a/293818/7696

awk '{ gsub(/'\''/,"'"'\\\\''"'");
       print "curl -XDELETE '\''ADDRESS:PORT/VALUE/VALUE/"$1"'\''"}' \
 /tmp/filename | 
 sh

Если вы абсолютно уверены, что в именах файлов не будет раздражающих символов, это еще проще:

awk '{ print "curl -XDELETE ADDRESS:PORT/VALUE/VALUE/"$1 }' /tmp/filename | sh

3
12.05.2017, 16:38
0 ответов

Теги

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