Необходимо выйти =
в ${i%=*}
потому что иначе суффиксный шаблон =*
подвергается =
расширение, таким образом, =
интерпретируется как название команды. Это - причина * not found
ошибка.
Zsh не разделяет слова на подстановках переменных по умолчанию, таким образом, $LS_COLORS
расширяется до отдельного слова. Иметь for
цикл воздействует на разделенные от двоеточия части $LS_COLORS
, использовать for i in $=LS_COLORS
. Или более идиоматически в zsh, не использовать IFS
но вместо этого укажите явно, как разделить: for i in ${(s.:.)LS_COLORS}
.
Синтаксис ${!x}
означать “значение переменной, имя которой $x
” характерно для удара. Zsh имеет эквивалентную конструкцию, P
флаг расширения параметра: ${(P)x}
.
На основе Вашего комментария я использовал бы netcat и не обеспокоился бы FTP вообще (предполагающий, что Вы не можете использовать scp).
Исходный сервер,
cat myfile | nc -q 10 -l -p <someport>
Целевой сервер,
nc sourceserver someport > targetfile
Если Вы все еще думаете, что Вам нужен FTP-сервер (и Ваш вопрос все еще не говорит, почему он должен поддерживать FTP), то можно просмотреть тех в этом списке,
Список Википедии программного обеспечения FTP-сервера
Честно говоря, не уверенный, как Вы обрабатываете выполнение его на нестандартных портах, FTP использует два порта (21 и 22), один для данных и один для команд. Можно изменить поведение с помощью пассивного FTP, но я никогда не пытался настроить FTP-сервер за пределами типичных портов (потому что FTP обычно небезопасен).
Я думаю, что необходимо посмотреть на scp (не уверенный, почему Вы не можете использовать его, Вы не предусматриваете).
xinetd
установка дляnetcat
... – Aaron D. Marasco 10.08.2011, 03:02