В вашем коде несколько проблем.
arg
, но внутри цикла вы ссылаетесь на «$ @»
, а не на «$ arg»
. (Это, очевидно, то, что вызывает проблемный вывод, который вы наблюдаете.) "$ @"
в строке для
. Но помимо этого, ваш код также излишне сложен. Попробуй это.
printf '\tg++ -ansi -Wall -g -o' >>Makefile
printf ' %s' "$@" >>Makefile
Между прочим, если это происходит внутри какой-либо управляющей структуры, вероятно, эффективнее и элегантнее перенаправить только один раз. Каждое перенаправление приводит к тому, что файл открывается и закрывается отдельно, и часто процесс упрощается, если вы можете просто написать один раз, независимо от того, существует ли уже выходной файл.
if things are as you wish them to be; then
execute code which generates output
fi >Makefile
Если у вас только одна сетевая карта, вы используете PF только как "брандмауэр хоста". У вас нет внутренней сети. Вам не нужны такие вещи, как NAT, переадресация и т.д. Просто разрешите входящие службы и допустимый исходящий трафик, и все готово.