Вы упомянули xargs
. Команда xargs появилась еще в PWB/Unix, когда ни оболочка Thompson, ни оболочка Mashey не поддерживали циклы for
. Я думаю, что цикл for
работает лучше всего в вашем случае. Но это довольно элегантно, когда программы используют конвейеры, когда это возможно, поэтому вот как это сделать с помощью xargs:
printf "%s\n" abc def ghi jkl | xargs -I {} unzip applications/{}.zip -d applications/{}/
Это потому, что ваша оболочка интерпретирует кавычки и интерпретирует остальную часть оператора awk в оболочке, а не в awk.
Это не имеет ничего общего с awk. Вы не можете включать одинарную кавычку внутри сценария или строки, разделенных одинарными кавычками, в большинстве оболочек (, таких как Bourne -или csh -, например ). Попробуйте echo 'foo'bar'
и убедитесь, что это не удается. Теперь попробуйте echo 'foo\'bar'
и убедитесь, что это тоже не работает. Теперь попробуйте echo "foo'bar"
и echo 'foo'\''bar'
и посмотрите, сможете ли вы понять, почему они успешны (и нет, я не предлагаю вам заключать скрипты в двойные кавычки ). См.https://mywiki.wooledge.org/Quotesдля получения дополнительной информации.